Java泛型二:自定义泛型类

可以发现形如:ArrayList<String> list = new ArrayList<String>();

                         或者ArrayList<Integer> list = new ArrayList<Integer>();

                         或者ArrayList<Cat> list = new ArrayList<Cat>();

ArrayList(这个类的功能就是存储数据)是一个类,这个类后面的<>中可以添加任意的类型;ArrayList就是一个泛型类,通过ArrayList的源码发现,在定义ArrayList类的时候,其参数使用了E,即并不确定该类到底存储什么样类型的数据,,用了E暂时占着这个坑,做一个虚假的代表,表示ArrayList可以存储E类型的数据或E的子类类型的数据。

通过ArrayList这个泛型类的定义,可以结合E这个占坑的魔法字符,构建自己的泛型类。


1.NumGeneric类使用了<T>这种形式,表示类中的T可以代表任意类型的数据,从而使得该类为泛型类。这个类中的public T num;中T到底是什么类型的数据暂不确定,等到具体使用的时候,给他赋什么类型的数据,这个类型的数据就会替换掉T这个占坑符。

自然,不同于ArrayList类,NumGeneric类的功能并不是存储数据,但该类广泛的数据类型也体现了泛型类的特点。

public class NumGeneric<T>{
	
	public T num;
	
	public T getNum(){
		return num;
	}
	public void setNum(T num){
		this.num = num;
	}
	
	// 测试
	public static void main(String[] aegs){
		NumGeneric<Integer> intNum = new NumGeneric<Integer>();
		intNum.setNum(10);
		System.out.println(intNum.getNum());
		
		NumGeneric<Float> floatNum = new NumGeneric<Float>();
		floatNum.setNum(5.7f);
		System.out.println(floatNum.getNum());
	}

}

2.NumGenericTwo类,演示的是两个 <T,X>的形式。

public class NumGenericTwo<T,X> {
	private T num1;
	private X num2;
	
	public void genNum(T num1,X num2){
		this.num1 = num1;
		this.num2 = num2;
	}

	public T getNum1() {
		return num1;
	}

	public void setNum1(T num1) {
		this.num1 = num1;
	}

	public X getNum2() {
		return num2;
	}

	public void setNum2(X num2) {
		this.num2 = num2;
	}
	
	// 测试
	public static void main(String[]args){
		NumGenericTwo<Integer,Float> numObj = new NumGenericTwo<>();
		numObj.genNum(25, 6.8f);
		System.out.println(numObj.getNum1()+"  "+numObj.getNum2());
	}
	

}

注:

(1)具体为什么需要自定义泛型类,还不清楚,以前也没有遇到过,等得到具体业务场景使用时,可能会加深理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值