class Outer{
int i=100;
void inncl(){
final int i=10;//这个怎么访问
class Inner{
int i=1;
void test(int i){
System.out.println(i);
System.out.println(this.i);
//System.out.println(怎么访问final i);
System.out.println(Outer.this.i);}}
Inner inn=new Inner();
inn.test(0);
}
public static void main(String []args){
Outer o=new Outer();
o.inncl();}}希望各位大哥回答下,我是菜鸟没分,以后下次在补

解决方案 »

  1.   

    楼主我教你怎么贴代码:
    1、将代码进行良好的格式化,以方便阅读。
    2、在发帖文本框的上方单击“#”按钮,选择 Java
    3、将代码粘贴到【code=Java】和【/code】之间。发出来的帖子就会是下面的效果:public class Hello {    // 程序入口
        public static void main(String[] args) {
            System.out.println("Hello!");
        }
    }
      

  2.   


    class Outer{
    int i=100;
    void inncl(){
    final int i=10;//这个怎么访问
    class Inner{
    int i=1;
    void test(int i){
    System.out.println(i);
    System.out.println(this.i);
    //System.out.println(怎么访问final i);
    System.out.println(Outer.this.i);}}
    Inner inn=new Inner();
    inn.test(0);
    }
    public static void main(String []args){
    Outer o=new Outer();
    o.inncl();}}
      

  3.   

    看似简单其实我还真不知道,我研究了下~~虽然这个内部类是在inncl()方法中~~~但是final int i=10还是局部变量,而类中方法要获得别的方法的局部变量就是给这个含有局部变量的方法一个返回值让他返回这个局部变量的值~~~
      

  4.   

    直接改为如下,
    不传参数得了呗:class Outer
    {
    int i = 100; void inncl()
    {
    final int i = 10;//这个怎么访问
    class Inner
    {
    void test()
    {
    //访问final i
    System.out.println(i);
    System.out.println(Outer.this.i);
    }
    }
    Inner inn = new Inner();
    inn.test();
    } public static void main(String[] args)
    {
    Outer o = new Outer();
    o.inncl();
    }
    }
      

  5.   

    我知道这样能够访问final i
    谢谢回复
      

  6.   

    /** 
    * 源代码如下 
    * 不解处:TalkingClock.start方法执行(clock.start(1000, true);)后,方法内部生成的Timer t对象已经不处于生存期,有点糊涂? 
    * 希望能说得透彻些! 
    */ 
    import java.awt.*; 
    import java.awt.event.*; 
    import java.util.*; 
    import javax.swing.*; 
    import javax.swing.Timer; public class AnonymousInnerClassTest 

      public static void main(String[] args) 
      { 
          TalkingClock clock = new TalkingClock(); 
          clock.start(1000, true);       // keep program running until user selects "Ok" 
          JOptionPane.showMessageDialog(null, "Quit program?"); 
          System.exit(0); 
      } 
    } /** 
    * A clock that prints the time in regular intervals. 
    */ 
    class TalkingClock 

      /** 
        * Starts the clock. 
        * @param interval the interval between messages (in milliseconds) 
        * @param beep true if the clock should beep 
        */ 
      public void start(int interval, final boolean beep) 
      { 
          ActionListener listener = new ActionListener() 
            { 
                public void actionPerformed(ActionEvent event) 
                { 
                  Date now = new Date(); 
                  System.out.println("At the tone, the time is " + now); 
                  if (beep) Toolkit.getDefaultToolkit().beep(); 
                } 
            }; 
          Timer t = new Timer(interval, listener); 
          t.start(); 
      } 

      

  7.   

    楼上的 不好意思
    我自己还是个JAVA新手 没办法回答你的问题
      

  8.   

    不能访问了,被你的同名方法参数屏蔽了。
    同为局部变量,当前作用域中定义的变量屏蔽了父级作用域中的同名变量,比如:
    int i = 0;
    {
      int i = 0;
      // 这里也不能访问外层的变量i
    }