Java中泛型(2)——泛型类(传智播客毕老师视频讲解)

本文介绍了在Java中使用泛型类的场景与优势。通过对比使用Object类型与泛型的示例,展示了如何解决多态带来的类型强制转换问题,并提高了代码的灵活性与安全性。

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

什么时候定义泛型类
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完成扩展(多态)。

现在定义泛型来完成扩展。


使用Object的做法

public class Tool 
{//泛型出现前的用法,用Object引用指向子类对象,即多态的方法
	private Object obj;
	public void setObject(Object obj)
	{
		this.obj=obj;
	}
	public Object getObject()
	{
		return obj;
	}
}
public class WorkerClass 
{
	public void show()
	{
		System.out.println("Worker");
	}
}
public class StudentClass 
{
	public void show()
	{
		System.out.println("Student");
	}
}
public class BenericClassDemo 
{
	public static void main(String[] args) 
	{

		Tool T=new Tool();
		T.setObject(new StudentClass());
		<span style="color:#ff0000;">StudentClass S=(StudentClass)T.getObject();</span>
		S.show();
	}
}

但是使用Object接收对象后,一个严重问题就是多态使得父类引用不能调用子类对象的特有方法!想调用子类对象特有方法的话,需要进行类型强制转换,即向下转型!


使用泛型接收,修改部分代码如下:

public class ToolGeneric <span style="color:#ff0000;"><myType></span>
{//使用泛型后,用任意书写额myType接收任意类型的对象,
	private <span style="color:#ff0000;">myType</span> obj;
	public void setMyType(<span style="color:#ff0000;">myType </span>obj)
	{
		this.obj=obj;
	}
	public <span style="color:#ff0000;">myType</span> getMyType()
	{
		return obj;
	}
}
public class BenericClassDemo 
{
	public static void main(String[] args) 
	{
		ToolGeneric<StudentClass> T=new ToolGeneric<StudentClass>();
		T.setMyType(new StudentClass());
		//T.setMyType(new WorkerClass());
		<span style="color:#ff0000;">StudentClass S=T.getMyType();</span>
		S.show();
	}
}
其中myType是任意规定,人为设置的一个泛型,即表示可以接收任意类型的对象,其可以书写成你想要表达的意思,没有固定限制!其实际含义根据你传进来的对象而自动更改!因此避免了强制转换!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值