Java学习(96)Java泛型——自定义泛型类、自定义泛型方法


注:看ArrayList泛型可以Ctrl点ArrayList点进去看源码。
自定义泛型也就是不知道定义的是什么类型的数据,例如下面案例中的T就是。

案例1:自定义泛型类(跟1个参数)

package com.study.generic;
public class NumGeneric<T> {
	private T num;
	public T getNum(){
		return num;
	}
	public void setNum(T num){
		this.num=num;
	}
	//测试
	public static void main(String[] args){
		NumGeneric<Integer> intNum=new NumGeneric<>();
		intNum.setNum(10);
		System.out.println("Integer:"+intNum.getNum());
		
		NumGeneric<Float> floatNum=new NumGeneric<>();
		floatNum.setNum(5.0f);
		System.out.println("Float:"+floatNum.getNum());
	}
}

运行结果:

Integer:10
Float:5.0

案例2:自定义泛型类(跟2个参数)

package com.study.generic;
public class TwoNumGeneric<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){
		TwoNumGeneric<Integer,Float> numObj=new TwoNumGeneric<>();
		numObj.genNum(25, 5.0f);
		System.out.println("num1="+numObj.getNum1());
		System.out.println("num2="+numObj.getNum2());
	}
}

注:这里的genNum()方法起名的意义是generatorNumber,即同时为两个参数赋值。
运行结果:

num1=25
num2=5.0

自定义泛型方法

注:泛型方法不一定写在泛型类里面。
得写在返回值类型之前。

案例1:打印输出泛型方法

package com.study.generic;
public class GenericMethod {
	public <T> void printValue(T t){
		System.out.println(t);
	}
	
	public static void main(String[] args){
		GenericMethod gm=new GenericMethod();
		
		gm.printValue(123);
		gm.printValue("hello");
		gm.printValue(5.0f);
	}
}

运行结果:

123
hello
5.0

案例2:打印输出泛型方法

这时发现 gm.printValue("hello");会报错,这是因为这里只能传入Number类以及它的子类,因此传入字符串类型的数据就会报错。

package com.study.generic;

public class GenericMethod {
	public <T> void printValue(T t){
		System.out.println(t);
	}
	
	public static void main(String[] args){
		GenericMethod gm=new GenericMethod();
		
		gm.printValue(123);
//		gm.printValue("hello"); // 会报错
		gm.printValue(5.0f);
	}
}

运行结果:

123
5.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值