实例变量与?类型相同?

时间:2019-10-09 09:30:15

标签: java generics

考虑此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中声明泛型。

1 个答案:

答案 0 :(得分:1)

  

我希望能够从转换器继承类型,而不必在ConverterContainer中声明泛型。

您将必须为派生类和父类都声明所有泛型类型,但可以将它们绑定在一起:

public abstract ConverterContainer<T1, T2, T extends Converter<T1, T2>>
       extends Converter<T1,T2>

所以您在这里上新课

  • 类型T1T2的含义与父类中的含义相同(但您可以更改它们的名称,如果需要的话,重要的是它们在“ extends子句)

  • 附加类型T,在这种情况下,它被限制为Converter<T1, T2>,但也可能完全不同