Java 泛型在类继承方面的使用
2018-01-12 15:17
435 查看
对泛型的了解不多,最近了一个类继承方面的包装,更进一步了解泛型能如何使用。
需求如下:
有一个工厂类,通过工厂类去生产一个 Consumer。
Consumer 需要调用 setMessageListener 方法去设置一个 IMessageListener。
这个 IMessageListener 有一个方法
现在需要,使用者在使用
最简单的方法,把 IMessageListener 修改成如下形式:
调用方
包装方(对setMessageListener的包装)
需求如下:
有一个工厂类,通过工厂类去生产一个 Consumer。
Consumer 需要调用 setMessageListener 方法去设置一个 IMessageListener。
这个 IMessageListener 有一个方法
onMessage(Object message)
现在需要,使用者在使用
onMessage方法时,可以指定
message对象的类型,而不用自己在
onMessage方法里强转一下。例如:
旧:onMessage(Object message) 新1:onMessage(String strMsg) 新2:onMessage(MyObject myObj) 新3:。。。
最简单的方法,把 IMessageListener 修改成如下形式:
public interface IMessageListener<T> { void onMessage(T msg); }
调用方
consumer.setMessageListener(new IMessageListener<IBusMessage>() { @Override public void onMessage(MyMessageType msg) { // do sth } }
包装方(对setMessageListener的包装)
public void setMessageListener(IMessageListener listener) throws MessageBusException { // 注意1,声明接口时,不用指定 <T> dmlc.setMessageListener(new MessageListener() { @Override public void onMessage(Message rawMsg) { Object objMsg = msgConverter.fromMessage(rawMsg); // 注意2,这里直接把 objMsg 传给 onMessage 方法就可以了,不用转成 T 类型,Java自己帮我们转了。 // 原来以为,这是需要手动转成 T 所在的 class 或 其它类型 listener.onMessage(objMsg); } } }
相关文章推荐
- [疯狂Java]泛型:泛型的定义(类、接口、对象)、使用、继承
- Java 使用泛型 泛型之间继承关系
- java泛型编程学习 笔记三:泛型继承规则以及通配符“?”使用
- 使用Java继承与泛型特性创建高效与安全的DAO对象
- 第五章 继承、接口与泛型 分类: java 2009-12-29 16:43 348人阅读 评论(0) 收藏
- java 泛型?基本使用
- Java 泛型使用(续)
- Java 理论与实践:使用通配符简化泛型使用
- Java 泛型使用(续)
- 在 Java 的泛型类型中使用通配符
- Java 理论与实践:使用通配符简化泛型使用,第 2 部分
- Java 理论与实践: 使用通配符简化泛型使用
- 为什么JAVA要使用单继承体系
- Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳
- [转贴] Java 理论与实践: 使用通配符简化泛型使用
- Java 5.0 泛型之 使用泛型统一传入的参数类型
- Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳
- Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳
- Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳
- Java 理论与实践: 使用通配符简化泛型使用