new Test()和new Test(){}之间的区别
这两种实例化类的新对象的方式之间有什么区别,如下所示:
Test t1=new Test();Test t2=new Test(){ };
当我尝试以下代码时,我可以看到两个对象都可以访问方法foo(),但是t2无法访问variable x(variable x无法解析):
public class Test{
int x=0;
public void foo(){ }
public static void main (String args[])
{
Test t1=new Test();
Test t2=new Test(){ };
t1.x=10;
t2.x=20;
t1.foo();
t2.foo();
System.out.println(t1.x+" "t2.x);
}
}
回答:
Test t2=new Test(); 将创建Test类的对象。
但是Test t2=new Test(){ };将创建一个测试子类的对象(在这种情况下,即匿名内部类)。
您可以在那提供任何方法的实现
Test t2=new Test(){ public void foo(){ System.out.println("This is foo");}
};
这样,当foo()从对象调用方法时t2,它将打印出来This is foo。
代码中的编译时错误是由于缺少条件运算符
System.out.println(t1.x+" "+t2.x); ###
以上是 new Test()和new Test(){}之间的区别 的全部内容, 来源链接: utcz.com/qa/425350.html



