第六章:泛型程序设计

第六章:泛型程序设计

为什么要用泛型

  • 提高程序易读性,提高程序安全性,限制参数类型。

定义泛型

  • 定义一个简单得泛型类

    public class Demo<T>{
    	private T name;
    	public Demo(){};
    	public Demo(T name){
    		this.name = name;
    	}
    	public void setName(T name){
    		this.name = name;
    	}
    	public T getName(){
    		return name;
    	}
    }
    
    Demo<String> demo = new Demo("Alan");
    T就代表实例化类得时候传进来得参数类型,不可以传基本类型,可以传基本类型的封装类;
    
  • 定义一个泛型方法

    class ArrayAlg{
    	public static<T> T getMiddle(T...a){
    		return a[2]
    	}
    }
    

通配符类型

  • 通配符概念:在通配符类型中,允许参数发生变化,例如Pair<? extends Employee>表示任何泛型Pair类型

  • 通配符的超类型限定:

    ? super Manger
    
  • 例子:

    public static void minmaxBonus(Manager[] a,Pair<? super Manager> result){
    	if(a.length == 0 )return;
    	Manager min =a[0];
        Manager max = a[0];
        for(int i = 1; a < a.length;i++){
        	if(min.getBonus() > a[i].getBonus()) min = a[i];
        	if(max.getBonus() < a[i].getBonus()) max = a[i];
        }
        result.setFirst(min);
        result.setSecond(max);
    }
    
    public interface Comparable<T>{
    	public int compareTo(T other)  //限定传入的类型为T,比如传string  那就直接收string
    }
    

约定俗成的泛型

  • E:element(在集合中使用,因为集合中存放的是元素)
  • T:Type(java类)
  • K:key(键)
  • V:value(值)
  • N:number(数字类型)
  • ?:不确定的java类型

<? extends T>和<? super T>的区别

  • <? extends T>表示该通配符所代表的类型是T类型的子类。
  • <? super T>表示该通配符所代表的类型是T类型的父类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值