- 啥是泛型啊?它就是一个变量,用来接收数据的值,泛型就是不知道要创建什么类型的对象,先给他模拟一种,用E代替,例如,集合Arraylist,它内部的Arraylist(E),E就是泛型,当创建对象时例如,Arraylist(String) ,就会把string赋值给E,这就是E的作用,下图中Arraylist都用E代替,因为它不知奥你要传入什么呀,或许integer或许Student
- 那么问题来了为什么要使用他呢?用不用有什么区别么?
- 首先,不使用泛型有一个优点乃就是添加进去的对象可以是不同类型的,无需要使用<>这个符号来存类型,不要加i默认object类型。
并且对象直接时Object类的对象,无论是string还是int都可以,也可以用迭代器来遍历,注意迭代器next()赋值时要用Object obj来接收,同理迭代器也是如此不加。但是缺点就是不能用数据类型本身的方法,比如string中的length()方法,只能用object类的方法。要想输出字符串的length()长,只得向下转型,成string类,再进行使用,没错,但是若遇到下一个add是int类型时,string的length()方法又会失效,会报一个类型转换异常。总之就是容易引发异常。 - 若使用一个泛型,首先避免了类型转换的麻烦,那么类型已经被定义,不能做更改(也算是一个缺点吧),但是创建对象可以使用迭代器来遍历,还有一个优点是可以报错提前到了编译阶段,就是在输入的阶段,而不是运行阶段。
package Collection2;
import java.util.ArrayList;
import java.util.Iterator;
public class Demo1 {
public static void main(String[] args) {
ArrayList arrayList=new ArrayList();//object类型
arrayList.add("fds");
arrayList.add(5);
arrayList.add("4rew");
Iterator iterator=arrayList.iterator();
while( iterator.hasNext()){
Object o=iterator.next();
System.out.println(o);
}
}
}
此时加上向下转型
此时异常出现,int出错了,注意转性时要用object类型的o,不要错用arraylist/iterator
-
哎哟,泛型真有意思,有意识,长见识了下面是类2,类1
-
注意不要一上来就psvm,类一泛型创建对象时不在里面。否则出错
-
默认是object类型
package UseCollection;
public class Use1 {
public static void main(String[] args) {