我需要知道列表的泛型类型,它在java中作为类型对象作为参数传递,而不需要迭代列表 staticvoidtest1(intx){ 开关(x){ 案例1:{ArrayList list1=new ArrayList(); } 案例2:{ArrayList list1=new ArrayList(); } } ((List)list1.add(()x);//第x行 } 公共静态void main(字符串[]args){ 试验1(1); }

我需要知道列表的泛型类型,它在java中作为类型对象作为参数传递,而不需要迭代列表 staticvoidtest1(intx){ 开关(x){ 案例1:{ArrayList list1=new ArrayList(); } 案例2:{ArrayList list1=new ArrayList(); } } ((List)list1.add(()x);//第x行 } 公共静态void main(字符串[]args){ 试验1(1); },java,Java,在test1中,根据从main函数传递的参数创建列表 在x行中,必须在根据开关盒中初始化列表的类型进行类型转换后添加x参数。您不能这样做:您在test1中丢失了信息,您将新创建的列表分配给原始类型的变量list 更新: 现在,当您将列表传递到test2时,信息将丢失。我需要知道泛型类型。。。不,你没有。这就是使用泛型集合的全部意义。我要说的是,正确使用泛型列表是只调用接口通用的方法。也就是说,你不需要知道里面有什么类型。我明白了,但我需要知道一种方法来找到列表中的类型created@TimBie

在test1中,根据从main函数传递的参数创建列表


在x行中,必须在根据开关盒中初始化列表的类型进行类型转换后添加x参数。您不能这样做:您在
test1
中丢失了信息,您将新创建的列表分配给原始类型的变量
list

更新:


现在,当您将列表传递到
test2

时,信息将丢失。我需要知道泛型类型。。。不,你没有。这就是使用泛型集合的全部意义。我要说的是,正确使用泛型列表是只调用接口通用的方法。也就是说,你不需要知道里面有什么类型。我明白了,但我需要知道一种方法来找到列表中的类型created@TimBiegeleisen我已经编辑了我的问题,现在清楚了吗?你的代码是教科书上的坏习惯。不可能添加到一个通用的列表中,因此您可能想考虑在<代码> TEST2()/<代码>中不使用泛型。@ GeordinJose仍然不起作用:通过将列表传递给<代码> TEST2,信息丢失了。我现在已经更改了代码。是否有可能获得初始化它的类型。@GeordinJose这甚至不会编译。请记住,泛型类型(静态)绑定到变量
list1
,而不是它引用的
ArrayList
对象。
static void test1(int x) {

    switch(x) {
    case 1 :{ ArrayList<String> list1  = new ArrayList<String>();
        }
    case 2 : { ArrayList<Integer> list1  = new ArrayList<Integer>();
        }
    }
    ((List)list1).add((<casttype>)x); //line x
}
public static void main(String[] args) {
    test1(1);
}