这个问题在这里已经有了答案:
What is PECS (Producer Extends Consumer Super)?
(16 个答案)
1年前关闭。
import java.util.*;
class GenericClass<T>{
ArrayList<T> list = new ArrayList<>();
void add(T obj){
list.add(obj);
}
void callMethod(){
list.get(0).display();
}
}
class Test{
public void display(){
System.out.println("HELLO WORLD");
}
}
class Main{
public static void main(String... args){
GenericClass<Test> gen = new GenericClass<Test>();
Test t = new Test();
gen.add(t);
gen.callMethod();
}
}
我创建了这些简单的类。测试类对象被传递给添加功能,但我可以使用方法显示。它给出了错误 - 找不到符号显示()当我只打印对象时,我可以看到它打印了正确的对象。
请帮忙,我对java很陌生。
谢谢
最佳答案
您必须将泛型类型声明为 Test 类的扩展,因为没有任何扩展的 T 可以是任何类型,甚至是没有 display() 方法的类型。
class GenericClass<T extends Test>{
ArrayList<T> list = new ArrayList<>();
void add(T obj){
list.add(obj);
}
void callMethod(){
list.get(0).display();
}
}
class Test{
public void display(){
System.out.println("HELLO WORLD");
}
}
关于java - 无法在 Java 中调用通用对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63208155/