Java中泛型类型的泛型类型?

时间:2015-03-27 12:19:59

标签: java generics

我有一个界面

public interface BWidgetObject<T> {
}

我希望使用此接口基于此类型创建新的通用接口:

public interface BDataList<BWidgetObject> {}

前者发出隐藏类型T的警告。以下给出了编译器错误:

public interface BDataList<BWidgetObject<T>> {}

如何将BWidgetObject<T>表示为BDataList的类型参数?

2 个答案:

答案 0 :(得分:6)

您可以尝试:

public interface BDataList<T extends BWidgetObject<?>> {}

这里我们指定类型T将是我们实际上并不关心的类型的BWidgetObject(这就是我们使用通配符的原因)。我们只关心T以及它将是BWidgetObject的子类型。

答案 1 :(得分:1)

使用通用绑定

public interface BDataList<T extends BWidgetObject<?>> {}

或者,如果您需要显式键入小部件,则需要创建另一个子接口:

public interface BWidgetDataList<T> extends BDataList<BWidgetObject<T>> {}