2

我的班级有两个构造函数:

public Foo( Bar bar, Baz baz ) {
    // do stuff
}
public Foo( Bar bar ) {
    this( bar, new Baz() );
}

现在,Baz 有一个接受布尔值的构造函数。我想传递this instanceof FooSubclass. Eclipse 给我一个错误说“在显式调用构造函数时不能引用 'this' 或 'super'”

我在这个问题中看到了为什么会发生这种情况的解释,但我只是想知道在这种情况下是否有解决方法。

4

2 回答 2

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) );
}
于 2013-06-19T19:26:07.553 回答
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 );
}
于 2013-06-19T19:32:28.063 回答