黑马程序员_日记49_泛型定义在类上
来源:互联网 发布:淘宝小女孩子长裙礼服 编辑:程序博客网 时间:2024/06/16 08:57
——- android培训、java培训、期待与您交流! ———-
泛型定义在类上
泛型什么时候要定义在类上呢?
当需要的时候?
什么时候需要呢?
当需要的引用数据类型不确定的时候。
注意:早期是用Object来完成的,缺点是需要强制转换。
一、原始情况
1 定义Worker类–引用数据类型
2 定义工具类操作Worker
/*//工人类class Worker{}//操作引用数据类型Workerclass Tool_Worker{ private Worker w; public void setWorker(Worker w) { this.w = w; } public Worker getWorker() { return w; }}//主类class GenericDemo3{ public static void main(String[] args) { Tool_Worker tw = new Tool_Worker(); tw.setWorker(new Worker()); tw.getWorker(); }}
二、当有学生类和工人类两个类的时候,就要定义两个工具类
//学生类class Student{}class Worker{}//操作引用数据类型Workerclass Tool_Worker{ private Worker w; public void setWorker(Worker w) { this.w = w; } public Worker getWorker() { return w; }}//操作引用数据类型Studentclass Tool_Student{ private Student s; public void setStudent(Student s) { this.s = s; } public Student getStudent() { return s; }}//主类class GenericDemo3{ public static void main(String[] args) { //操作Worker Tool_Worker tw = new Tool_Worker(); tw.setWorker(new Worker()); tw.getWorker(); //操作Student Tool_Student ts = new Tool_Student(); ts.setStudent(new Student()); ts.getStudent(); }}
三、JDK1.5以前使用Object来解决
//Object定义的工具类class Student{}class Worker{}class Tool{ //工具类传递的引用类型不确定 private Object obj; //set public void setObject(Object obj) { this.obj = obj; } //get public Object getObject() { return obj; }}class GenericDemo3{ public static void main(String[] args) { //操作Worker Tool t = new Tool(); //t.setObject(new Student());//运行时候,发生类型转换异常 t.setObject(new Worker());//需要程序员主观判断该传什么类 //强制转换 Worker w =(Worker)t.getObject(); }}
四、JDK1.5以后使用泛型来解决
//泛型定义的工具类class Student{}class Worker{}//泛型定义在类上class Tool<T>{ //工具类传递的引用类型不确定 private T t; //set public void setObject(T t) { this.t = t; } //get public T getObject() { return t; }}class GenericDemo3{ public static void main(String[] args) { //操作Worker Tool<Worker> t = new Tool<Worker>(); //t.setObject(new Student());//编译的时候,发生错误,由程序员解决,这样安全了 t.setObject(new Worker());//不需要程序员主观判断该传什么类,客观的检测需要传什么引用类型 //不需要强制转换 Worker w =t.getObject(); }}
以后设计到操作的引用类型不确定的时候就把泛型定义在类上!
0 0
- 黑马程序员_日记49_泛型定义在类上
- 黑马程序员_日记50_泛型定义在方法上
- 黑马程序员_日记51_泛型定义在接口上
- 黑马程序员_日记53_泛型应用在自定义类的对象上
- 黑马程序员_日记47_泛型概述
- 黑马程序员_日记48_泛型基本使用
- 黑马程序员_学习日记十六_基础加强之泛型、类加载器
- 黑马程序员_日记70_System类
- 黑马程序员_日记52_泛型限定初级使用
- 黑马程序员_多线程(上)
- 黑马程序员_Java学习日记11_常用类
- 黑马程序员_日记62_Collections工具类方法
- 黑马程序员_学习日记3_WinForm
- 黑马程序员_学习日记8_HTML
- 黑马程序员_学习日记16_JavaScript
- 黑马程序员_学习日记19_jQuery
- 黑马程序员_学习日记十一_GUI
- 黑马程序员_java学习日记_数组
- DirectX9 向量
- mysqli连接数据类实例
- AsyncTask和Handler的优缺点比较
- Android初学习 - ProgressBar控件的简单说明
- Jedis2.4.2链接池配置注释
- 黑马程序员_日记49_泛型定义在类上
- (12)mysql中的光标
- leetcode 005 —— Longest Palindromic Substring
- cocos2d-x安装配置与示例程序运行
- mac下配置xampp+thinkphp解决方案
- Java 服务端接收多图上传
- SIP中的DNS过程
- Xcode编译Undefined symbols for architecture xxx 错误总结
- 第六周项目4:成员函数,友元函数和一般函数有区别