java - Java 泛型用例
问题描述
我正在尝试在这个用例中使用 Java 泛型,并且在没有在线找到任何答案后需要一些帮助来确定如何实现它。这是我的用例....
// Interface DevObject
public interface DevObject {
void addExtension(DevExtension extension);
}
// Interface DevExtension
public interface DevExtension<T extends DevObject> {
void start(T devObject);
}
然后我创建了两个分别实现 DevObject 和 DevExtension 的类,如下所示......
public class MyDevObject implements DevObject {
void addExtension(DevExtension extension) {
}
}
public class MyDevObjectExtension implements DevExtension<MyDevObject> {
void start(MyDevObject devObject) {
}
}
但我真正想做的是使用泛型来修改 DevObject 上的 addExtension 方法,以便它只能添加具有通用 T 值的 DevExtension 实例与实现 DevObject 的类相同。
任何帮助,将不胜感激。
解决方案
您正在寻找CRTP:
public interface DevObject<T extends DevObject<T>> {
void addExtension(DevExtension<T> extension);
}
public interface DevExtension<T extends DevObject<T>> {
void start(T devObject);
}
推荐阅读
- ios - 在检索发件人 ID 的 FCM 令牌之前未设置错误 APNS 设备令牌
- google-apps-script - 根据单元格值自动发送电子邮件并使用以前的脚本进行调整
- html - 如何使用 flexbox 模型 css 将所有 div 元素居中在一个 flex 项目中?
- ftp - ftp_fput(): 无法服务 PORT 命令
- mysql - MYSQL:向结果中添加一列,其中包含此行是否包含特定列的最大数量
- javascript - 数组集中的“,”之后
- android - Brother Printer 和 Flutter 出现 JNIWrapper NULL jstring 错误
- scikit-learn - 在 knn 中找到最佳参数
- php - 我在设置 laravel 时发生了什么错误
- authentication - JS 中的 Office Web 加载项并使用 SSAL 登录:登录后的interaction_in_progress