/*
* 泛型:
* 1.在集合中使用泛型List<Integer> l=newArrayList<Integer>();
* 2.泛型类
* 3.格式:
* class 类名<字母列表'T','K'>
* 修饰符 字符 T 属性;
* 修饰符 返回值(字符T)方法(字符T t)
* 4.泛型接口,模拟dao层接口。
* 5.通配符 ?
* List<? super A> ?必须是A的父类或是A类。extends相反
*/
import java.util.List;
/*
* 泛型类的方式实现
*/
public class Order<T> {
//构造
public Order(T xxx){
}
public Order(){
}
private T t;
public T getT(){
return t;
}
public void setT(T t){
this.t=t;
}
//泛型方法 不再使用T,另外一个类型
public <E>E getOrder(E e){
return e;
}
/*
* 数组到集合的复制
* 数组E 到集合List的复制
*/
public<E> List<E>copyArrayToList(E[] e,List<E> list ){
for (E tmpe : e) {
list.add(tmpe);
}
return list;
}
}
public class Demo4 {
public static void main(String[] args) {
//调用泛型类
Order<Integer> o = new Order<Integer>();
o.setT(1);
Integer integer=o.getT();
System.out.println(integer);
//调用泛型方法
String string=o.getOrder("string");
Order o1 = o.getOrder(o);
System.out.println(string);//直接打印
System.out.println(o1);//打印地址
//数组复制 泛型方法
List list=o.copyArrayToList(new String[]{"e","a","c"}, new ArrayList());
System.out.println(list);
show(new ArrayList<String>());
show1(new ArrayList<Double>());
show2(new ArrayList<Number>());
}
/*
* 通配符 泛型中的使用
* ? 表示要展示的类型
*/
//无要求,什么类型都可以
public static void show(List<?> list){
}
//list中放置的必须是Number的子类或Number类型
public static void show1(List<? extends Number> list){
}
//list中放置的必须是Integer的父类或Integer类型
public static void show2(List<? super Integer> list){
}
}
泛型接口的实现
import java.util.*;
/*
* 泛型接口
* 业务逻辑,处理数据的增删改查,add(Person) del(int) get(Person)
* add(Student) del(int) get(Student)
*/
public interface Dao<T> {
void add(T t);
int del(int id);
List<T>getList();
}
import java.util.List;
import com.hpe.map.Person;
/*
* 实现泛型接口
*/
public class PersonDao implements Dao<Person>{
@Override
public void add(Person t) {
// TODO Auto-generated method stub
}
@Override
public int del(int id) {
// TODO Auto-generated method stub
return 0;
}
@Override
public List<Person> getList() {
// TODO Auto-generated method stub
return null;
}
}