泛型的使用
泛型:
1.没有使用泛型,任何Object子类都可以被添加
2.数据类型强转可能会爆出异常
public class TestGeneric {
//集合中没有使用泛型
public static void main(String[] args) {
List list=new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add("123");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
使用泛型之后:
public class TestGeneric {
//集合中没有使用泛型
public static void main(String[] args) {
List<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
//list.add("123");报错
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
自定义泛型类:
public class Order<T> {
private String name;
private int age;
private T t;
List<T> list =new ArrayList<>();
public void add() {
list.add(t);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
泛型与继承:
泛型与继承的关系:
若A是类B的子类,那么List就不是List的子类
public static void main(String[] args) {
Object obj=null;
String str="AA";
obj=str;
Object[] obj1=null;
String[] str1=new String[] {"AAA","BBB","CCC"};
obj1=str1;
List<Object> list1=null;
List<String> list2=new ArrayList<>();
// list1=list2;
}
通配符:
List 、List。。。。都是List
public static void main(String[] args) {
List<?> list=null;
List<Object> list1=new ArrayList<>();
List<String> list2=new ArrayList<>();
list=list1;
list=list2;
List<? extends Number> list3=new ArrayList<>();
List<Integer> list4=null;
list3=list4;
List<? super Number> list5=new ArrayList<>();
list5=list1;
}