Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中将泛型对象添加到列表中?_Java_Generics_Collections - Fatal编程技术网

如何在java中将泛型对象添加到列表中?

如何在java中将泛型对象添加到列表中?,java,generics,collections,Java,Generics,Collections,如何在java中将泛型对象添加到列表中 目前,我有两个类执行相同的功能,并希望将它们集成在一起 public class MyClass1 { private List<Object1> myList = new ArrayList<>(); public void addList(Object1 o) { myList.add(o); } } public class MyClass2 { private List&

如何在java中将泛型对象添加到列表中

目前,我有两个类执行相同的功能,并希望将它们集成在一起

public class MyClass1 {
    private List<Object1> myList = new ArrayList<>();

    public void addList(Object1 o) {
        myList.add(o);
    }
} 

public class MyClass2 {
    private List<Object2> myList = new ArrayList<>();

    public void addList(Object2 o) {
        myList.add(o);
}
} 
公共类MyClass1{
private List myList=new ArrayList();
公共无效添加列表(Object1 o){
添加(o);
}
} 
公共类MyClass2{
private List myList=new ArrayList();
公共无效地址列表(Object2o){
添加(o);
}
} 
差不多

公共类MyClass{
private List myList=new ArrayList();
公共void addList(对象o){
添加(o);
}
} 

您可以将自己的类设置为通用类:

public class MyClass<T> {
    private List<T> myList = new ArrayList<>();

    public void addList(T o) {
        myList.add(o);
    }
} 
公共类MyClass{
private List myList=new ArrayList();
公共无效地址列表(TO){
添加(o);
}
} 

您可以使两个类
Object1
Object2
实现相同的接口“ObjInterface”

public class MyClass {
    private List<ObjInterface> myList = new ArrayList<>();

    public void addList(ObjInterface o) {
        myList.add(o);
    }
}
公共类MyClass{
private List myList=new ArrayList();
公共无效地址列表(对象接口o){
添加(o);
}
}

如果希望该类仅包含Object1或Object2,而不包含任何其他内容,则可以将其他两个答案组合在一起:

interface ObjInterface {
    // may be empty
}

public class MyClass<T extends ObjInterface> {
    private List<T> myList = new ArrayList<>();

    public void addList(T o) {
        myList.add(o);
    }
}

MyClass<Object1> object1only = new MyClass<>();
MyClass<Object2> object2only = new MyClass<>();
接口对象接口{
//可能是空的
}
公共类MyClass{
private List myList=new ArrayList();
公共无效地址列表(TO){
添加(o);
}
}
MyClass object1only=新建MyClass();
MyClass object2only=新建MyClass();
并将
实现对象接口
添加到Object1和Object2的定义中

如果将这两个类共有的方法添加到
ObjInterface
,则可以在
MyClass
中的
T
对象上调用这些方法,因为它们保证是
ObjInterface
的子类