我将如何在 Java 泛型中表达以下类型关系:
class MyClass<T> { }
interface MyInterface<T extends MyClass> {
void m1(T<Integer> argument);
void m2(T<String> argument);
void m3(T<?> argument);
}
没有编译器投诉。这甚至可能吗?我想确保所有方法都接收相同的(子)类,MyClass
同时不破坏类型安全。在域中,不同的子类 ogMyClass
没有意义。我真的必须像这样列出三个泛型类型变量:
class MyClass<T> { }
interface MyInterface<T1 extends MyClass<Integer>,
T2 extends MyClass<String>, T3 extends MyClass<?>> {
void m1(T1 argument);
void m2(T2 argument);
void m3(T3 argument);
}
我觉得这读起来很糟糕,也没有像我希望的那样很好地表达我的意图。这个问题与我关于泛型定义中的泛型原始类型的其他问题有关,这仍然让我感到困惑。也许有人可以帮忙!谢谢你。