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