Java泛型


java泛型

  • 泛型方法及泛型类

    public class testOne {
    	private Q q;
    	public void set(Q q) {
    		this.q=q;
    	}
    	public Q get() {
    		return q;
    	}
    	public void print(Q str) {
    		System.out.println(str);
    	}
    }
    
  • 静态方法使用泛型:要在返回类型前使用定义泛型

    public class staticMethod {
    	public static void print(T t) {
    		System.out.println(t);
    	}
    }
    
  • 泛型接口

    public interface interf1 

    { public void print(P p); } //实现接口时指明确定的数据类型 public class interImp implements interf1 { @Override public void print(String p) { // TODO Auto-generated method stub System.out.println(p); } //继承泛型接口 public class interImp2

    implements interf1

    { @Override public void print(P p) { // TODO Auto-generated method stub System.out.println(p); } } }

  • 泛型的通配符:使用?作为通配符

    	public static void printColl(ArrayList<?> a) {
    		Iterator<?> t=a.iterator();
    		while(t.hasNext()) {
    			System.out.print(t.next());
    		}
    	}
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    	testOne t1=new testOne();
    	t1.print("wq");
    	t1.set("ew");
    	System.out.println(t1.get());
    	staticMethod s=new staticMethod();
    	s.print(520);
    	interImp in=new interImp();
    	in.print("wqop");
    	ArrayList a1=new ArrayList();
    	a1.add(1);
    	a1.add(2);
    	a1.add(3);
    	ArrayList a2=new ArrayList();
    	a2.add("谁");
    	a2.add("在");
    	a2.add("说话");
    	printColl(a1);
    	printColl(a2);
    }
    执行结果:
    wq
    ew
    520
    wqop
    123谁在说话
    
  • 泛型的上限:可接收该类和该类的子类,使用extend关键字

    ? 先假设一个person类,其子类有student,

    ? 设置上限:public static void printColl(ArrayList<? extend person> a) //?可以接收到person及student,也就是说只要继承了person的都可以接收。

  • 泛型的下限:可接收该类和该类的父类,使用super关键字

    ? 设置下限:public static void printColl(ArrayList<? super student> a)//?可以接收到person及student

    只要父类是student都可以接收。