我描述的是一个班级
public class MyClass{ ... }
public class Main{
public static void main(String[] args){
MyClass m= new MyClass(){ };
System.out.println(m.getClass.getName);
}
}
输出:
main.Main$1
这个输出意味着什么?我描述了匿名类,因此m
具有匿名类型。我预计会抛出NullPointerException
。
答案 0 :(得分:4)
我除了
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
字段,看看他们得到的名称。
答案 1 :(得分:3)
这个输出意味着什么?
Main $ 1表示Main下的第一个匿名类。
注意: - $
表示内部类
我除了`NullPointerException。
你为什么这么期待?请提供一些理由。 :)