java List<T>和List<Object>的区别

java List&lt;T&gt;和List&lt;Object&gt;的区别?
2024-12-31 13:06:08
推荐回答(3个)
回答1:

一个是泛型,一个是Object,后者还可能要类型转换,容易出错。
Java中的泛型是个假泛型,仅仅只是在编译器那边做了语法检查而已,和C#里的泛型不一样的。
基本上,不管你在List<>里面写什么类型,编译通过了以后运行时全部都是Object。
Java泛型是通过类型擦除实现的,编译器的语法检查是次要的。
重要的是泛型系统可以为做更多的类型检查,借助编译器在编译期的类型检查可以减少运行时出现类型错误的几率。

回答2:

// List 的T表示的是某一类型可以用人一类型来替代,一般在定义的时候使用
// List 就是具体的了表示这个List里只能放置Object

    public static  List test(T t){
//现在T是什么类型谁都不知道,编译器在编译的时候也是不知道的,只有在runtime时才知道
List  l=new ArrayList();
l.add(t);
System.out.println(t);
return l;
    }

    public static void main(String [] args){

List  list1=test("String");
List  list2=test(10);
    }

回答3:

感觉可能是如果你要声明一个List的对象比如List list=new ArrayList();这样是不允许的..但是如果你要定义了泛型List 那么当你声明的时候就可以写成List list=new ArrayList();感觉这样灵活性会更高一点..