java - 实例变量类型相同?

标签 java generics

考虑这个转换器接口(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)

  • 类型 T1T2与父类中的含义完全相同(但如果您愿意,您可以更改它们的名称,重要的是它们出现在 extends 子句中的位置)

  • 额外类型 T在这种情况下被限制为 Converter<T1, T2> ,但也可能是完全不同的东西

关于java - 实例变量类型相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58301083/

相关文章:

java - 如何保持一个线程调用多个JForm?

java - 如何通过 PowerShell(使用 Java)获取 Windows 上所有已安装程序的列表?

java - 从通用父类(super class)型扩展?

ios - 如何在 Swift 中定义闭包数组?

c# - 从类型中获取类定义

java - 无法对函数 "public ArrayList<char[]> sort(ArrayList<char[]> chars)"中的数组类型 char[] 调用 copyOf(char[], int)

java - spring-data-rest,你能提供实体的完整细节而不是(或与)链接吗

java - IntelliJ 无法在 SPeL 中找到变量

java - Java中从子类实例调用类的泛型方法返回实例的类的误解

c# - 从 dbcontext 中的方法返回通用表