Java-泛型
准备工作:
建一个Order类
public class Order {
String rderName;
int orderId;
T orderT;
public Order() {
//编译不通过
//T[] t=new T[10];
//编译通过
T[] t=(T[])new Object[10];
}
public Order(String rderName, int orderId, T orderT) {
this.rderName = rderName;
this.orderId = orderId;
this.orderT = orderT;
}
public T getOrderT() {
return orderT;
}
public void setOrderT(T orderT) {
this.orderT = orderT;
}
@Override
public String toString() {
return "Order{" +
"rderName='" + rderName + ''' +
", orderId=" + orderId +
", orderT=" + orderT +
'}';
}
}
建一个SubOrder类
public class SubOrder extends Order{//不是泛型
}
建一个SubOrder类
public class SubOrder1 extends Order {//仍然是泛型
}
Java泛型注意事项
//异常类不能是泛型的
@Test
public void test1(){
Order order=new Order();
order.setOrderT("sdjf");
order.setOrderT(345);
//建议实例化时指明累的泛型
}
@Test
public void test2(){
//子类继承带泛型的父类时,指明的泛型类型,则实例化子类对象时,不再需要指明泛型
SubOrder so=new SubOrder();
so.setOrderT(123);
SubOrder1 sob1=new SubOrder1<>();
sob1.setOrderT("sskksks");
}
@Test
public void test3(){
//泛型不同的引用不能相互赋值
ArrayList al1=null;
ArrayList al2=null;
// al1=al2;
}
通配符
准备工作
先建一个Student类
public class Student extends Person{
}
建一Person类
public class Person {
}
通配符注意事项
@Test
public void test4(){
//通配符 ?
//类A是是类B的父类 G和G是没有关系的二者共同的父类是:G>
List