无法在Java中调用泛型对象的方法

无法在Java中调用泛型对象的方法,java,object,generics,methods,compiler-errors,Java,Object,Generics,Methods,Compiler Errors,我创建了这些简单的类。测试类对象被传递给add函数,但我可以使用display方法。它给出错误-找不到符号显示 当我打印对象时,我可以看到它打印的是正确的对象。 请帮忙,我对java很陌生。 谢谢您必须将泛型类型声明为测试类的扩展,因为没有任何扩展的T可以是任何类型,即使是没有显示方法的类型 import java.util.*; class GenericClass<T>{ ArrayList<T> list = new ArrayList<>()

我创建了这些简单的类。测试类对象被传递给add函数,但我可以使用display方法。它给出错误-找不到符号显示

当我打印对象时,我可以看到它打印的是正确的对象。 请帮忙,我对java很陌生。
谢谢

您必须将泛型类型声明为测试类的扩展,因为没有任何扩展的T可以是任何类型,即使是没有显示方法的类型

 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();
    }
}

您必须将泛型类型声明为测试类的扩展,因为没有任何扩展的T可以是任何类型,甚至是没有显示方法的类型

 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();
    }
}

什么都不可能。不是每一个可能传递给它的类都会有一个display方法。不是每一个可以传递给它的类都会有一个display方法。谢谢!但是你能解释一下我们为什么要这么做吗。。在许多例子中,我只看到T被声明。当我只打印对象System.out.printlnobj时;在add函数中,会显示正确的对象,那么为什么这些方法不起作用呢?t可以是任何东西。java中的任何东西都意味着对象。因此,在没有任何约束的情况下,泛型参数的擦除是对象,并且只能调用在对象上定义的方法。通过添加上限,即T扩展SomeClass,擦除设置为SomeClass,可以使用SomeClass上定义的方法和字段。谢谢!但是你能解释一下我们为什么要这么做吗。。在许多例子中,我只看到T被声明。当我只打印对象System.out.printlnobj时;在add函数中,会显示正确的对象,那么为什么这些方法不起作用呢?t可以是任何东西。java中的任何东西都意味着对象。因此,在没有任何约束的情况下,泛型参数的擦除是对象,并且只能调用在对象上定义的方法。通过添加上限,即T扩展SomeClass,擦除设置为SomeClass,可以使用SomeClass上定义的方法和字段。