public class NoStaticTest { AClass a; AClass b; { a=new AClass(1); b=new AClass(2); } } 这个是正确的,对于非静态变量的初始化,java是支持这种语法的,并且特别是对于匿名内部内,如果你不是在定义的时候就给成员变量赋初值,那么匿名内部类由于不存在类名,所以不存在显式的构造器(从而无法在构造器中初始化成员变量了),导致这种为成员赋初值的方式是必须的.这种语法的另一个作用在于,无论一个类中存在有多少个构造器来创建对象,在这个对象创建前都会执行{...}中的代码,因为{...}中的内容是在构造器执行前执行的.有时候这样做是很有用的,你...
|