java - 无法在 Java 中调用通用对象的方法

标签 java object generics methods compiler-errors

这个问题在这里已经有了答案:





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/

相关文章:

java - 如何从 Retrofit 的 onResponse 函数返回值?

java - 在 Spring 中回滚嵌套事务中的所有数据库提交

java - 将文本中心与 android 对齐

java - 当我事先检查是否存在元素时,为什么会引发 NoSuchElement 异常?

javascript - Nodejs服务器发送另一个对象到客户端

c++ - 如何在类成员函数中添加错误检查?

c# - 是否可以在类中定义任何类型的列表,它可以包含任何类型的列表

javascript - 删除多个对象属性?

ios - 动态(通用)快速继承自 <T>

java - 避免以下未经检查的警告