我不熟悉使用 Java 的新 CLASS_NAME() { STUFF } 功能,但我遇到的情况似乎很奇怪。考虑以下代码:
class Test
{
public String a;
public static void main( String[] args ) throws java.lang.Exception
{
String j = "abc";
//Emulating passing an argument as I did in my code.//
final String s = j;
Test v = new Test();
v.a = s;
Test e = new Test() {
public String a = s;
};
Test g = new Test();
g.a = s;
System.out.println( v.a );
System.out.println( e.a );
System.out.println( g.a );
}
}
我认为这个程序的输出是:
abc
abc
abc
相反,它是:
abc
null
abc
我真的很困惑为什么会这样。我自学了这个功能,所以我真的不太了解它。任何帮助表示赞赏。谢谢!