У меня есть внешний API (я не могу его изменить) с классом "A" и локальным классом "B", который переопределяет методы "A" и добавляет дополнительную функцию.
Мне нужно использовать один из них в соответствии с некоторым параметром "is_A".
/ ------ API (A.java) ----- /
package A;
public class A {
public int pingA( int value ) {
return value;
}
}
/ ------ мой класс (B.java) ----- /
package B;
import A.*;
public class B extends A {
@Override
public int pingA( int value ) {
return value;
}
public int pingB( int value ) {
return value;
}
public static void main(String[] args) {
final boolean is_A = false;
A obj;
if (is_A) {
obj = new A();
} else {
obj = new B();
}
if (!is_A) {
int n = obj.pingB(3);
}
}
}
В этом случае я хочу использовать класс "B", но команда "int n = obj.pingB (3);" не компилируется, потому что в A. нет метода pingB
Точное сообщение:
cannot find symbol
symbol: method pingB(int)
location: class A.A