接口方法的泛型被剥离

时间:2018-06-20 05:54:49

标签: java generics

我有这个界面:

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,泛型类型被剥离。当我将方法放入对象类(而非接口)中时,它就可以正常工作。 查看下面的屏幕截图

第一种方法来自接口,第二种方法来自类。它们都具有相同的签名

enter image description here

1 个答案:

答案 0 :(得分:1)

该接口有一个类型参数(Persistant<T...>),我忘记将其包含在我的Resident/obj类中。我只是通过使用implements Persistant来实现它,而使用implements Persistant<Resident>来实现它解决了我的问题!