java - 泛型类和子类型
问题描述
研究泛型类型......这是 Oracle 的一个例子:
interface PayloadList<E,P> extends List<E> {
void setPayload(int index, P val);
}
PayloadList 的以下参数化是 List 的子类型:
PayloadList<String,String>
PayloadList<String,Integer>
PayloadList<String,Exception>
有人可以提供 PayloadList 接口实现的实时示例吗?
解决方案
尽管这是在 Oracle 教程中,但我认为这是一个糟糕的例子。
您链接的页面说:
现在假设我们要定义自己的列表接口 PayloadList,它将泛型类型 P 的可选值与每个元素相关联
好吧,那不再是真的了List
。
我怀疑是否有人真正(认真地)实现过这个接口。
如果您想实现它,只需实现所有必需的方法。通过委托给现有的实现来实现大多数方法可能是最简单的List
,这强烈表明组合而不是继承是对添加此“有效负载”功能的类进行建模的正确方法。
也就是说,“带有关联有效负载的列表”类不再被视为“列表”:它是一个包含列表和有效负载的东西。
推荐阅读
- owasp - OWASP Zap 插件开发
- machine-learning - 如何理解分类中的“预测”和“标签”?
- javascript - PHP $_FILES 不允许上传音频文件(wav、mp3、aiff 等) - 但允许任何其他类型的扩展名
- d3.js - d3.geo.albersUsa() 不起作用
- spring - Spring Boot - 基于数据库的请求映射
- css - 为什么这不是一回事?原子属性选择器,例如 [blue] 或 [bold]
- ssl-certificate - `SSLCACertificateFile` 应该使用哪个证书?
- php - 试图获得一个随机数并有机会获得该数字
- javascript - 如何使用 Javascript 项目在 nativescript-sidekick 中使用预填充的 sqlite 数据库
- javascript - 如何打印从 REST 返回的嵌套错误消息?