Java泛型之泛型类

本文通过具体示例介绍Java泛型的基本用法,对比使用Object类型与泛型类的优劣,展示了如何定义泛型类及其实例化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


package newFeatures8;
class Worker {

}

class Student {
}
/*如果这么写的话 就只能获取Worker对象
    如果要获取n多种不同对象或者说是任意对象呢
   这时可以将Worker类型改为Object 类型
class Tool
{
	private Worker w;
	public void setWorker(Worker w)
	{
		this.w = w;
	}
	public Worker getWorker()
	{
		return w;
	}
}
*/

// 泛型前做法。//具有扩展性,但需要强转有安全隐患
class Tool {
	private Object obj;

	public void setObject(Object obj) {
		this.obj = obj;
	}

	public Object getObject() {
		return obj;
	}
}

// 泛型后做法
/* 泛型类
 * 什么时候定义泛型类? 当类中要操作的引用数据类型不确定的时候, 早期定义Object来完成扩展。 现在定义泛型来完成扩展。
 */
class Utils<QQ> {//泛型工具类 //QQ为自定义的泛型参数,类似于T,E
	private QQ q;

	public void setObject(QQ q) {
		this.q = q;
	}

	public QQ getObject() {
		return q;
	}
}

class GenericDemo {
	public static void main(String[] args) {
		Utils<Worker> u = new Utils<>();
		// u.setObject(new Student30());//如果传递的是非Worker类型编译时就报错
		 u.setObject(new Worker());
	 	 Worker w = u.getObject();
		/*一不小心传了个student对象进去,强制转换时就容易出现安全隐患
		 * Tool t = new Tool(); t.setObject(new Student()); Worker w =
		 * (Worker)t.getObject();
		 */
	 	Utils<Student> stu = new Utils<>(); 
	 	Student s=stu.getObject();
	 	 
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值