Java中是否有任何情况需要您将this
显式转换为当前类以外的其他类型?
class SomeClass
{
void foo()
{
SomeOtherClass s = (SomeOtherClass) this;
}
}
编辑 :所有答案都是指SomeOtherClass
是SomeClass
的子类,但是this
可以投射的情况在适当的OO设计的情况下,应避免使用。我正在寻找OO无法帮助你的情况,即SomeOtherClass
是超级 - 类SomeClass
。
答案 0 :(得分:5)
当SomeClass是SomeOtherClass的超类时。但是......如果你这样做,这意味着你的OO设计不太合适,你很可能会滥用你的模型。
答案 1 :(得分:2)
不,不应该存在需要将this
强制转换为子类的情况,至少没有适当的OO设计。以下示例仅用于说明如何使用它。
class BaseClass {
public void foo() {
if(this instanceof SomeClass) {
SomeClass s = (SomeClass) this;
s.bar();
} else {
baz();
}
}
private void baz() {
...
}
}
class SomeClass extends BaseClass {
public void bar() {
}
}