package com.generic;
public class SubOrder1<T> extends Order<T>{
}
package com.generic;
public class SubOrder extends Order<Integer>{
}
package com.generic;
/**
* 自定义泛型类
* @param
*/
public class Order<T> {
String orderName;
int orderId;
// 类的内部结构就可以使用类的泛型
T orderT;
public Order(){};
public Order(String orderName, int orderId, T orderT) {
this.orderName = orderName;
this.orderId = orderId;
this.orderT = orderT;
}
public String getOrderName() {
return orderName;
}
public void setOrderName(String orderName) {
this.orderName = orderName;
}
public int getOrderId() {
return orderId;
}
public void setOrderId(int orderId) {
this.orderId = orderId;
}
public T getOrderT() {
return orderT;
}
public void setOrderT(T orderT) {
this.orderT = orderT;
}
}
package com.generic;
import org.junit.Test;
public class GenericTest1 {
@Test
public void test1(){
// 如果定义了泛型,但实例化没有指明类型,那此泛型类型为Object类型(不建议)
Order<String> order = new Order<>("orderAA",123,"AA");
order.setOrderT("AA:Hello");
}
@Test
public void test2(){
SubOrder sub1 = new SubOrder();
// 由于子类在继承带泛型的父类时,指明了泛型类型。则实例化子类对象时,不再需要指明泛型。
// sub1.setOrderT();
}
}
P569 泛型与File-自定义泛型类泛型接口的注意点
@Test
public void test3(){
ArrayList<String> list1 = null;
ArrayList<Integer> list2 = null;
// list1 = list2;
}
// 静态方法中不能使用类的泛型
// 异常类不能声明为泛型类
P570 泛型与File-自定义泛型方法举例
// 泛型方法可声明为静态的
@Test
public void test4(){
Order<String> order = new Order<>();
Integer[] arr = new Integer[]{1, 2, 3, 4};
// 泛型方法的调用
List<Integer> list = order.copyFromArrayTolist(arr);
}
// 泛型方法,在方法中出现了泛型结构,泛型参数与类的泛型参数没有任何关系
public <E> List<E> copyFromArrayTolist(E[] arr){
ArrayList<E> list = new ArrayList<>();
for (E e : arr) {
list.add(e);
}
return list;
}
P571 泛型与File-举例泛型类和泛型方法的使用情景
// *** 作数据库场景
P572 泛型与File-泛型在继承方面的体现
package com.generic;
import org.junit.Test;
import java.util.List;
/**
* 泛型在继承方面的体现
* 通配符的体现
*/
public class GenericTest2 {
@Test
public void test1(){
Object obj = null;
String str = null;
obj = str;
Object[] arr1 = null;
String[] arr2 = null;
arr1 = arr2;
List<Object> list1 = null;
List<String> list2 = null;
// 没有子父类关系
// list1 = list2;
}
/*
虽然类A是类B的父类,但是G和G二者不具备子父类关系,二者是并列关系
补充:虽然类A是类B的父类,A是B的父类
*/
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)