JAVA泛型中的实际类型参数两边个代表什么意思?具体的含义。

2024-11-18 17:31:44
推荐回答(3个)
回答1:

List list1=new ArrayList();
list1.add(123);
list1.add("cccc");
list1.add("cc11");
for (int i = 0; i System.out.println(list1.size());
}
这个是代表你的这个list类型是String 类型,但是你所new的类型不确定,你应该这样写List list1=new ArrayList(); 就表示你的两变定义的类型都为String, 否则new ArrayList()就会报敬告异常,自动转换list的时候也会报异常,因为不确定类型;这里就需要手动转换了。

List list1=new ArrayList();
list1.add("cccc");
list1.add("cc11");
list1.add(123);

for (int i = 0; i System.out.println(list1.get(i));
}
而这个,就是说你new 的类型是String ,而list的类型是不确定的,它会自动转换,不过在java中写代码的时候list下方肯定会报敬告,说可能会发生异常

所以最好两边类型都确定为一种类型.
当你不确定类型的时候,请按照以下方式
List objects= new ArrayList();
确定类型的时候可以这样写
List objects= new ArrayList();

这样就没有任何错误了。
也不用手动转换了

回答2:

泛型,就是在编译之前做类型检查。
相比之前没有泛型的情况,List.get(int) 方法只能返回Object对象:
List l = new List();
l.add(new Student());
Object o = l.get(0);
Student s = (Student)s;
如果add进去的类型和get出来后强转的类型不匹配,则会出现运行时错误,不能在编译期检查到。

现在用泛型:
List l = new List();
l.add(new Student());
Student s = l.get(0);

避免了强转的代码,而且可以在编译的时候就检测到类型转换的错误。

你提出的问题,这种编译错误类似于将一个更大类型赋值给更小的类型,将父类赋值给子类的关系: List list1=new ArrayList();

回答3:

实际上是这样的 List list1 = new ArrayList();
List 你不写得话 默认是会给你加上的
new ArrayList(); 的 你是必须要写得 以为你要使用范型