public class TheOuter {
class aa{
int bb = TheOuter.aa.this.hashCode();
System.out.println(bb);
}
}
代码这样写,System.out这一句编译时通不过. 
内部类aa中,在代码中加入如下大括号就可以通过了,
public class TheOuter {
class aa{
{
int bb = TheOuter.aa.this.hashCode();
System.out.println(bb);
}
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【luckybean】截止到2008-07-04 00:51:36的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:0                        
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:0                        
    结贴的百分比:0.00  %               结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    不加{}的话,System.out.println(bb); 这个执行语句就放在了类aa的声明的位置,这是不允许的.
    加了{}的话,相当于是声明这个类时的一个static操作,所以通过了.
      

  3.   

    System.out.println(bb);  是过程语言啊 不加的话  代表方法或者变量的声明啊 很容易想通的
      

  4.   


    错了,你说的那叫静态块,而楼主写的是初始化块。解释如下:
    public class TheOuter { class aa {  //内部类也是类 int bb = TheOuter.aa.this.hashCode();  //内部类 aa 的实例域 { //这个叫初始化块,即直接把语句块写到类定义内部
      //作用类似构造方法,初始化块内的语句会在对象实例域空间分配后构造方法调用前执行。
    System.out.println(bb);
    } static { //这才是3楼说的静态块,其中代码在类加载后执行,而此时还没有此类的对象存在。
    //some code
    } }}
      

  5.   

    不加{}的话,System.out.println(bb); 这个执行语句就放在了类aa的声明的位置,这是不允许的. 
    加了{}的话,是代码块,加载类时优先加载 了他,所以通过了