005为什么Java泛型不支持基本类型?

import java.util.ArrayList;
import java.util.List;
class ClassA{}
public class PlusOne {
    public static void main(String[] args) {
        /*为什么Java中的泛型只能用于类,而不能用于原始类型?*/
        //例如,这可以正常工作:
        List<Integer> foo = new ArrayList<Integer>();
        List<int> bar = new ArrayList<int>();
        //报错: Type argument cannot be of primitive type

    }
    //Java中的泛型是一个完全编译时的结构-编译器将所有泛型使用转换为正确的类型. 这是为了保持与以前的JVM运行时的向后兼容性!
    //这个:
    public void test(){
        List<ClassA> list = new ArrayList<ClassA>();
        list.add(new ClassA());
        ClassA a = list.get(0);
        //变成(大致):
        List list1 = new ArrayList();
        list.add(new ClassA());
        ClassA a1 = (ClassA)list.get(0);
    }
}
/*
因此,任何用作泛型的东西都必须可转换为Object(在此示例中get(0)返回Object),而原始类型则不是. 因此它们不能用于泛型.
*/

 

posted @ 2021-06-22 16:26  arun_python  阅读(515)  评论(0)    收藏  举报