One*_*ree 2 java runtime class instanceof
我有一个叫做基类class Base
和两个子类
class A extends Base
Run Code Online (Sandbox Code Playgroud)
和
class B extends Base
Run Code Online (Sandbox Code Playgroud)
我foo
在Base
.
而不是把实现foo
in class A
and class B
,这样我就可以做
void foo (Object o)
{
// A's implementation
assert o instanceof A;
}
void foo (Object o)
{
// B's implementation
assert o instanceof B;
}
Run Code Online (Sandbox Code Playgroud)
无论如何要放入foo
Base,并且仍然可以检查运行时类吗?我想过这样的事情:
void foo (Object o)
{
// Check that o is instanceof a runtime class
assert o instanceof this.getClass(); // ????
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
您可以像这样实现您的方法:
public void foo() {
if (this instanceof A) {
// implementation for A
}
else if (this instanceof B) {
// implementation for B
}
}
Run Code Online (Sandbox Code Playgroud)
但是多态的重点是将A的实现放在A中,这样这个实现就可以使用A的私有字段来实现方法(B也一样,或者当然)。