我有这个界面:
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
,泛型类型被剥离。当我将方法放入对象类(而非接口)中时,它就可以正常工作。 查看下面的屏幕截图:
第一种方法来自接口,第二种方法来自类。它们都具有相同的签名
答案 0 :(得分:1)
该接口有一个类型参数(Persistant<T...>
),我忘记将其包含在我的Resident/obj
类中。我只是通过使用implements Persistant
来实现它,而使用implements Persistant<Resident>
来实现它解决了我的问题!