我除外NullPointerException
。
为什么?代码的哪一部分让你期待这个?
这个输出是什么意思?
您的班级中使用的匿名班级按照它们在班级中出现的顺序编号。main.Main$1
意味着这是创建的第一个匿名类。
例如,考虑这个例子:
class MyClass { }
public class Demo {
static MyClass obj = new MyClass() {
{
System.out.println("static field: " + this.getClass().getName());
}
};
MyClass obj2 = new MyClass() {
{
System.out.println("instance field: " + this.getClass().getName());
}
};
public static void main(String[] args) {
Demo obj4 = new Demo();
MyClass obj3 = new MyClass() {
{
System.out.println("local variable: " + this.getClass().getName());
}
};
}
}
不要担心那些块。这些只是每个匿名类中的实例初始化程序块。
执行此代码时,您将获得以下输出:
static field: Demo$1
instance field: Demo$2
local variable: Demo$3
现在尝试在static
字段之后移动instance
字段,并查看它们的名称。