我知道this(...)
用于从另一个构造函数调用类的一个构造函数。但是我们可以使用new
一样吗?
为了更清楚地说明问题,第2行是否有效?如果是(因为编译器没有提示),为什么输出的是null
而不是Hello
?
class Test0 {
String name;
public Test0(String str) {
this.name= str;
}
public Test0() {
//this("Hello"); // Line-1
new Test0("Hello"){}; // Line-2
}
String getName(){
return name;
}
}
public class Test{
public static void main(String ags[]){
Test0 t = new Test0();
System.out.println(t.getName());
}
}
最佳答案
这是有效的,但它在该构造函数中创建了一个完全独立的Test0
实例(更具体地说是Test0
的匿名子类的实例),并且没有在任何地方使用它。当前实例仍将name
字段设置为null
。
public Test0() {
// this creates a different instance in addition to the current instance
new Test0("Hello"){};
}
请注意,如果使用无参数构造函数调用
new
运算符,则会得到StackOverflowError
。关于java - 可以在类的构造函数内使用 "new"来调用Java中的另一个构造函数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30680411/