Java中泛型(2)——泛型类(传智播客毕老师视频讲解)
2014-09-30 11:24
323 查看
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完成扩展(多态)。
现在定义泛型来完成扩展。
使用Object的做法
但是使用Object接收对象后,一个严重问题就是多态使得父类引用不能调用子类对象的特有方法!想调用子类对象特有方法的话,需要进行类型强制转换,即向下转型!
使用泛型接收,修改部分代码如下:
当类中要操作的引用数据类型不确定的时候,
早期定义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是任意规定,人为设置的一个泛型,即表示可以接收任意类型的对象,其可以书写成你想要表达的意思,没有固定限制!其实际含义根据你传进来的对象而自动更改!因此避免了强制转换!
相关文章推荐
- Java中泛型(4)——泛型接口(传智播客毕老师视频讲解)
- Java中泛型(5)——泛型限定(传智播客毕老师视频讲解)
- Java中泛型(1)——泛型介绍(传智播客毕老师视频讲解)
- Java多线程(2)——多线程安全(传智播客毕老师视频讲解)
- Java中StringBuffer与StringBuilder(传智播客毕老师视频讲解)
- Java中可变参数方法(传智播客毕老师视频讲解)
- Java中设计模式——装饰类(传智播客毕老师视频讲解)
- Java中时间获取(传智播客毕老师视频讲解)
- Java多线程(3)——多线程通信(传智播客毕老师视频讲解)
- Java中静态导入(传智播客毕老师视频讲解)
- Java中集合框架工具类——Collections(传智播客毕老师视频讲解)
- Java中IO流(3)——字符流缓冲区(传智播客毕老师视频讲解)
- Java中IO流(5)——字节流缓冲区(传智播客毕老师视频讲解)
- Java中泛型(3)——泛型方法(传智播客毕老师视频讲解)
- Java中System类(传智播客毕老师视频讲解)
- Java中IO流(6)——键盘录入及流操作规律(传智播客毕老师视频讲解)
- Java中String类(传智播客毕老师视频讲解)
- Java中Collection子接口(2)——Set接口(传智播客毕老师视频讲解)
- Java中IO流(1)——IO流概述(传智播客毕老师视频讲解)
- Java中Runtime类(传智播客毕老师视频讲解)