java - 接口方法中的泛型被剥离
问题描述
我有这个界面:
public interface Persistant<T extends BaseDaoEnabled<T, UUID>> extends Identifiable {
T getSelf();
default <P> P getInstance(DataKey<P> key) {
return key.getDefaultInstance();
}
和一个实现它的类。我的问题是,当我调用obj.getInstance(DataKeys.X)
X 作为DataKey<X>
对象时,此方法的返回类型是Object
而不是X
,泛型类型被剥离。当我将方法放在我的对象类(不是接口)中时,它工作得很好。请参阅下面的屏幕截图:
第一个方法来自接口,第二个方法来自类。他们都有相同的签名
解决方案
该接口有一个类型参数 ( Persistant<T...>
),我忘记将其包含在我的Resident/obj
类中。我只是通过使用来implements Persistant
实现它,使用implements Persistant<Resident>
修复了我的问题来实现它!
推荐阅读
- javascript - 如何使用 ajax 发布 json 对象?
- javascript - 如何选择具有包含特定文本的属性的元素?
- python - 如何让这个 while 循环和 json 响应正常工作?
- java - Android 应用程序中的进程之间如何共享实例变量的内存?
- python - Python 表中聚合文件的计算字段
- javascript - 使用箭头动态添加的下拉导航
- c++ - 在 STL 中使用 operator== 进行命名空间解析
- python - 使用具有每小时时间序列作为输入的 LSTM 预测每日价值
- .net - 我需要使用哪种技术来构建可定制的(也是跨平台的)移动应用程序?
- matlab - 为什么我在 matlab 的“lla2eci”和“sgp4.propagate”之间有所不同?