在 Java 中使用 instanceof 运算符

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)

fooBase.

而不是把实现fooin class Aand 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)

无论如何要放入fooBase,并且仍然可以检查运行时类吗?我想过这样的事情:

 void foo (Object o)
 {
    // Check that o is instanceof a runtime class
    assert o instanceof this.getClass(); // ????
 }
Run Code Online (Sandbox Code Playgroud)

谢谢。

JB *_*zet 6

您可以像这样实现您的方法:

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也一样,或者当然)。