我有一个带有类“A”和本地类“B”的外部 API(我无法修改它),它覆盖了“A”的方法并添加了一个附加功能。 我需要根据一些参数“is_A”使用其中之一。
/------ API (A.java) -----/
package A;
public class A {
public int pingA( int value ) {
return value;
}
}
/------我的类(class)(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
最佳答案
您在父类(super class)中不存在的子类中添加了一个新方法。无法使用对父类(super class)的引用来调用子类中的新方法。您必须转换为子类类型才能使用新方法。
你可以这样做:
A obj = new B();
if (obj instance of B) {
B b = (B)obj;
int n = b.pingB(3);
}
这里 B
是 A
但 A
不是 B
所以它没有 pingB (int) 方法。
关于java类,扩展外部API功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2024695/