您的位置:首页 > 编程语言 > Java开发

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

2014-09-30 11:24 323 查看
什么时候定义泛型类

当类中要操作的引用数据类型不确定的时候,

早期定义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是任意规定,人为设置的一个泛型,即表示可以接收任意类型的对象,其可以书写成你想要表达的意思,没有固定限制!其实际含义根据你传进来的对象而自动更改!因此避免了强制转换!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐