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