考虑此Converter接口:
public interface Converter<T1, T2>
{
public T2 convert(T1 toConvert);
public T1 reverseConvert(T2 toReverseConvert);
}
如果我现在有一个抽象类,它将转换器接口作为通用参数:
public abstract ConverterContainer<T extends Converter<?,?>>{
protected final T converter;
protected final T1 converterT1; //inherit converter T1
protected final T2 converterT2; //inherit converter T2
}
我希望能够从转换器继承类型,而不必在ConverterContainer中声明泛型。
答案 0 :(得分:1)
我希望能够从转换器继承类型,而不必在ConverterContainer中声明泛型。
您将必须为派生类和父类都声明所有泛型类型,但可以将它们绑定在一起:
public abstract ConverterContainer<T1, T2, T extends Converter<T1, T2>>
extends Converter<T1,T2>
所以您在这里上新课
类型T1
和T2
的含义与父类中的含义相同(但您可以更改它们的名称,如果需要的话,重要的是它们在“ extends
子句)
附加类型T
,在这种情况下,它被限制为Converter<T1, T2>
,但也可能完全不同