目录
泛型概述
泛型的好处
泛型方法
泛型:是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。
泛型的格式:<数据类型>
注意:泛型只能支持引用数据类型;
import java.util.ArrayList;
import java.util.Iterator;
public class GenericsDemo1 {
public static void main(String[] args) {
//1.创建集合的对象
//如果我们没有给集合指定类型,默认为所有的数据类型都是Object类型;
//此时推出了泛型;
ArrayList list=new ArrayList();
//2.添加数据
//list.add(123);
list.add("aaa");
//list.add(new Student("zhangsan",123));
//3.遍历集合获取里面的每一个元素;
Iterator it=list.iterator();
while(it.hasNext()){
String str=(String)it.next();
str.length();
System.out.println(str);
}
}
}
泛型的细节:
泛型类:
使用场景:当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类;
import java.util.Arrays;
public class MyArrayList {
//E:表示不确定的类型,该类型在类名后面已经定义过了;
//e:形参的名字,变量名;
Object[] obj=new Object[10];
int size;
public boolean add(E e){
obj[size]=e;
size++;
return true;
}
public E get(int index){
return (E)obj[index];//强转;
}
@Override
public String toString() {
return Arrays.toString(obj);
}
}
public class GenericsDemo2 {
public static void main(String[] args) {
MyArrayList list=new MyArrayList<>();
//list.add("aaa");
//list.add("bbb");
//System.out.println(list);
//[aaa, bbb, null, null, null, null, null, null, null, null]
MyArrayList list2=new MyArrayList<>();
list2.add(123);
list2.add(456);
list2.add(789);
int i=list2.get (0);
System.out.println(i);
System.out.println(list2);
}
}
方法中形参的类型不确定时,可以使用类名后面定义的泛型
方法中形参类型不确定时:
格式:
修饰符<类型>返回值类型 方法名(类型 变量名){
}
import java.util.ArrayList;
public class ListUtil {
private ListUtil(){}
//1.定义一个静态方法addAll,用来添加多个集合的元素;
public static void addAll(ArrayList list, E e1, E e2, E e3, E e4){
list.add(e1);
list.add(e2);
list.add(e3);
list.add(e4);
}
public void show(){
System.out.println("小仙女");
}
}
import java.util.ArrayList;
public class GenericsDemo3 {
public static void main(String[] args) {
//测试类
ArrayList list=new ArrayList<>();
ListUtil.addAll(list,"aaa","bbb","ccc","ddd");
System.out.println(list);
//[aaa, bbb, ccc, ddd]
}
}
泛型接口: