哪一个更好的泛型或不是Java中的泛型?

Lay*_*yla 0 java generics

我想知道我是否在Java中使用以下ArrayList和Generics:

   int s=0;
    ArrayList<Integer> items=new ArrayList();
    for (int i=0;i<10;i++){
        items.add(i);
    }
    for (int j=0;j<items.size();j++){
        s=s+items.get(j);
    }
Run Code Online (Sandbox Code Playgroud)

或者更好地使用这种原始形式?

    List listitem=new ArrayList();
    for (int i=0;i<10;i++){
        listitem.add(i);
    }
    for (int j=0;j<listitem.size();j++){
        s=s+(int)listitem.get(j);
    }
    System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

我的意思是我已经读过当使用Generics时出现了变量的拆箱和装箱问题,即从一种原始类型变为一种对象.那么推荐哪一款?在什么情况下,仿制药将是最佳选择?

谢谢

Jon*_*eet 9

你几乎应该在现代Java中使用原始形式.有几个地方很难不去,但总的来说这是一个坏主意.

在第二个片段中使用raw ListArrayListtypes绝不会阻止拳击 - 它只会降低类型安全性.在通用版本中,您不需要强制转换,int因为编译器知道列表必须只包含Integer引用或空值; 在原始形式中没有编译时保证.没有什么可以阻止你向列表中添加完全不同类型的引用 - 例如字符串.