Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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_Type Erasure - Fatal编程技术网

Java 创建通用列表

Java 创建通用列表,java,generics,type-erasure,Java,Generics,Type Erasure,如何在Java中创建genric列表?我还可以将Class实例传递给该方法 像这样: public static <T> List<T> createList(Class<T> clazz) { List<T> list = new ArrayList<T>(); list.add(clazz.newInstance()); return list; } 公共静态列表createList(类clazz){

如何在Java中创建genric列表?我还可以将
Class
实例传递给该方法

像这样:

public static <T> List<T> createList(Class<T> clazz) {
    List<T> list = new ArrayList<T>();

    list.add(clazz.newInstance());

    return list;
}
公共静态列表createList(类clazz){
列表=新的ArrayList();
add(clazz.newInstance());
退货清单;
}

我不明白你为什么想要一个方法。您只需执行
新建ArrayList()
新建ArrayList()
等操作即可

如果您想将其作为方法编写,请执行以下操作

 public static <T> List<T> createList() {
    return new ArrayList<T>();
 }
公共静态列表createList(){
返回新的ArrayList();
}

编译器将推断返回类型
列表

我不明白你为什么想要一个方法。您只需执行
新建ArrayList()
新建ArrayList()
等操作即可

如果您想将其作为方法编写,请执行以下操作

 public static <T> List<T> createList() {
    return new ArrayList<T>();
 }
公共静态列表createList(){
返回新的ArrayList();
}

编译器将推断返回类型
列表

如果要将实例传递给列表,则表示可以尝试此操作

public class info  {

    private int Id;

    public void setId(int i_Id) {
    this.Id = i_Id;
    }

    public int getId() {
    return this.Id;
    }

}

class two{
    private List<info> userinfolist;

    userinfolist= new ArrayList<info>();

    //now you can add a data by creating object to that class

     info objinfo= new info();
     objinfo.setId(10);
     userinfolist.add(objinfo); .//add that object to your list
     }
公共类信息{
私有int-Id;
公共无效设置Id(内部Id){
this.Id=i_Id;
}
公共int getId(){
返回此.Id;
}
}
二班{
私有列表用户信息列表;
userinfolist=newarraylist();
//现在,您可以通过向该类创建对象来添加数据
info objinfo=新信息();
objinfo.setId(10);
userinfolist.add(objinfo);.//将该对象添加到列表中
}

如果要将实例传递给列表,则表示可以尝试此操作

public class info  {

    private int Id;

    public void setId(int i_Id) {
    this.Id = i_Id;
    }

    public int getId() {
    return this.Id;
    }

}

class two{
    private List<info> userinfolist;

    userinfolist= new ArrayList<info>();

    //now you can add a data by creating object to that class

     info objinfo= new info();
     objinfo.setId(10);
     userinfolist.add(objinfo); .//add that object to your list
     }
公共类信息{
私有int-Id;
公共无效设置Id(内部Id){
this.Id=i_Id;
}
公共int getId(){
返回此.Id;
}
}
二班{
私有列表用户信息列表;
userinfolist=newarraylist();
//现在,您可以通过向该类创建对象来添加数据
info objinfo=新信息();
objinfo.setId(10);
userinfolist.add(objinfo);.//将该对象添加到列表中
}

列表已经是通用的。可以将任何类型的对象传递给列表。是否创建自己的泛型类?这很容易搜索。您已经这样做了。@R.J由于类型擦除,我想我无法创建新的ArrayList。那么您需要什么?@R.J换句话说:我知道我不能用Java泛型这样做:
new t()newarraylist
List已经是通用的了。可以将任何类型的对象传递给列表。是否创建自己的泛型类?这很容易搜索。您已经这样做了。@R.J由于类型擦除,我想我无法创建新的ArrayList。那么您需要什么?@R.J换句话说:我知道我不能用Java泛型这样做:
new t()
所以我想我也不能这样做:
新建ArrayList
但它能工作吗?我想我无法创建
新的ArrayList
。但是,即使我能做到,根据这个答案,我也不能向它添加元素。如果在方法之外进行,则需要使用正确的类型参数(
newarraylist()
,等等)。在该方法中,它是一个不同的故事,因为
T
是一个类型参数。该方法创建某种类型的泛型列表。实际类型无关紧要(因为类型擦除:
ArrayList
的运行时类型与
ArrayList
的运行时类型相同)。您不能做的是将内容添加到
列表
,但在本例中我们不会这样做:
List List List=createList()
,但它能工作吗?我想我无法创建
新的ArrayList
。但是,即使我能做到,根据这个答案,我也不能向它添加元素。如果在方法之外进行,则需要使用正确的类型参数(
newarraylist()
,等等)。在该方法中,它是一个不同的故事,因为
T
是一个类型参数。该方法创建某种类型的泛型列表。实际类型无关紧要(因为类型擦除:
ArrayList
的运行时类型与
ArrayList
的运行时类型相同)。您不能将内容添加到
列表中,但在本例中我们不会这样做:
List List=createList()