泛型类的声明
泛型不能是基本数据类型,必须是个类
例://这样会报错ArryList list<int>=new ArryList<int>();
class MyCollection<E> {// E:表示泛型;
Object[] objs = new Object[5];
public E get(int index) {// E:表示泛型;
return (E) objs[index];
}
public void set(E e, int index) {// E:表示泛型;
objs[index] = e;
}
}
泛型E像一个占位符一样表示“未知的某个数据类型”,我们在真正调用的时候传入这个“数据类型”。
泛型类的应用
public class TestGenerics {
public static void main(String[] args) {
// 这里的”String”就是实际传入的数据类型;
MyCollection<String> mc = new MyCollection<String>();
mc.set("aaa", 0);
mc.set("bbb", 1);
String str = mc.get(1);
//加了泛型,直接返回String类型,不用强制转换;
System.out.println(str);
}
}
泛型类的在集合中的使用
public class Test {
public static void main(String[] args) {
// 以下代码中List、Set、Map、Iterator都是与容器相关的接口;
List<String> list = new ArrayList<String>();
Set<Man> mans = new HashSet<Man>();
Map<Integer, Man> maps = new HashMap<Integer, Man>();
Iterator<Man> iterator = mans.iterator();
}
}
如果我们没有添加泛型
public class Test {
public static void main(String[] args) {
ArryList list = new ArrayList<String>();
//我们没有定义泛型,在传的时候可以随便传,这样我们的数据就不太安全,比如我们要传入成绩,必须是整数,但是我们在没有定义泛型就可以随便传
list.add(78);
list.add(78);
list.add("123");
for(Object sorce:list){
//我们添加了字符串,在强转时不能强转报错
int Stusorce=(Interge)sorce;
}
}
当我们添加了泛型后
public class Test {
public static void main(String[] args) {
ArryList list<Interge>= new ArrayList<Interge>();
list.add(78);
list.add(78);
//list.add("123");编译时就会报错
for(Interge sorce:list){
//不用强转了
int Stusorce=sorce;
System.out.println(Stusorce);
}
}