我的课程有两个构造函数:
public Foo( Bar bar, Baz baz ) {
// do stuff
}
public Foo( Bar bar ) {
this( bar, new Baz() );
}
现在,Baz有一个带布尔值的构造函数。我想传递this instanceof FooSubclass
的值。 Eclipse在给我一个错误时说“在显式调用构造函数时不能引用'this'或'super'”
我在this question中看到了为什么会发生这种情况的解释,但我只是想知道在这种情况下是否有解决方法。
答案 0 :(得分:0)
如果我理解你的问题,你可以这样做。
public Foo( Bar bar, Baz baz ) {
// do stuff
}
public Foo( Bar bar ) {
this( bar, new Baz() );
}
public Foo( Bar bar, boolean flag) {
this( bar, new Baz(flag) );
}
答案 1 :(得分:0)
将null
传递给主构造函数,并在那里进行检查:
public Foo( Bar bar, Baz baz ) {
if (baz == null) {
baz = new Baz(this instanceof FooSubClass);
}
// do stuff
}
public Foo( Bar bar ) {
this( bar, null );
}