考虑这个转换器接口(interface):
public interface Converter<T1, T2>
{
public T2 convert(T1 toConvert);
public T1 reverseConvert(T2 toReverseConvert);
}
如果我现在有一个抽象类,它将转换器接口(interface)作为通用参数:
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 中声明泛型类型。
最佳答案
I want to be able to inherit the types from converter without having to declare the generic types in ConverterContainer.
您必须为派生类和父类声明所有泛型类型,但您可以将它们绑定(bind)在一起:
public abstract ConverterContainer<T1, T2, T extends Converter<T1, T2>>
extends Converter<T1,T2>
这是你的新类(class)
类型
T1
和T2
与父类中的含义完全相同(但如果您愿意,您可以更改它们的名称,重要的是它们出现在extends
子句中的位置)额外类型
T
在这种情况下被限制为Converter<T1, T2>
,但也可能是完全不同的东西
关于java - 实例变量类型相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58301083/