0

class E extends B {}
class B extends A {}

我们有,

B v = new E();
process(v);

我们知道这是真的,

v.getClass() == E.class

有没有办法以编程方式告诉 v 的静态绑定正是 B ?

编辑:最初的想法是对重载方法进行单行检查。就像是,

   process(A a) {
     // ... code for a.processABC();
     if (a.getStaticBindingClass() == B.class) { // not a subclass of B
        // Additional logic for statical binding case.
         ... 
     }
     // ... code for a.processDEF();
   }

可以引入进程(B b);但是,进程(A a)中有很多复制代码。

4

0 回答 0