クラス「A」とローカルクラス「B」の外部API(変更できません)があり、「A」のメソッドをオーバーライドして関数を追加しています。パラメータ「is_A」に従って、そのうちの1つを使用する必要があります。
/ ------ 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