Сказать
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) копируется много кода.
v
. Это поле? - person Daniel Pryden   schedule 14.12.2017v
и хочет знать его статический тип. - person Daniel Pryden   schedule 14.12.2017