您应该区分声明和定义。
在您的情况下,您声明一个class变量,
Test并将其分配给派生自某个类的对象
Test(这是一个匿名类),该对象中包含一些其他内容。
此定义之后的代码仅看到
t类
Test,它对此一无所知
x,
hello因为
Test没有它们。
因此,除了反射之外,您不能使用匿名类
x并
hello在定义之后。是的,开发人员在定义中需要这些变量时会使用此类变量。
提到您可以
Test在定义后立即调用不属于其中的方法和访问变量:
int y = new Test(){ int x = 0; //System.out.print("" + x); void hello(){ System.out.print("inside hellon"); }}.x;可以这样做是因为在这一点上,对象的类型是已知的(这是匿名类)。一旦将此对象分配给
Test t,就会丢失此信息。



