有没有办法在调用构造函数时检查我的对象的实例?

时间:2013-06-19 19:16:43

标签: java

我的课程有两个构造函数:

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中看到了为什么会发生这种情况的解释,但我只是想知道在这种情况下是否有解决方法。

2 个答案:

答案 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 );
}