java 泛型调用方法调用_java – 如何使用泛型调用最具体的方法?
有以下示例:
public class Test {
public static class A {}
public static void main(String[] args) {
A a = new A();
m1(a);
}
public static void m1(T t) {
// t.getClass().getSimpleName() is A
// t instanceof A is true
m2(t);
}
/* Not called */
public static void m2(A a) {
System.out.println("A");
}
public static void m2(Object o) {
// o.getClass().getSimpleName() is A
// o instanceof A is true
System.out.println("O");
}
}
我不明白為什么選擇m2(對象o)而不是m2(A a).如您所見,當調用m2(t)時,t“是A”.
輸出:
>實際
O
>預期
A
如何在上面的情況下使用泛型,以便選擇m2(A a)?
編輯:
即使我添加了類型B(類似于A),我也希望有一個通用的解決方案.
...
public static void main(String[] args) {
A a = new A();
m1(a);
B b = new B();
m1(b);
}
...
public static void m2(B b) {
System.out.println("B");
}
...
輸出:
>實際
O
O
>預期
A
B
總結
以上是生活随笔為你收集整理的java 泛型调用方法调用_java – 如何使用泛型调用最具体的方法?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: this super java_java
- 下一篇: BZOJ 2957 楼房重建 (分块)