说
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)中有很多复制代码。