我有以下Java泛型问题:
我有一个通用类,可以简单地描述为:
public class MyClass<T> {
AnotherClass<T> another;
OtherClass<T> other;
...
}
...
代表与案例无关的代码。
对于类MyClass<T>
而言,目前确切的类型T
并不重要,但对于以下两个类:
AnotherClass<T>
OtherClass<T>
它们的泛型类型非常重要,将在运行时基于此做出决策。
基于这个,类型T
并不是完全任意的,它可以是类层次结构T_1
或类层次结构T_2
的实例。
按照定义,该类的类型T
等同于Object
,但我知道它等同于T_1
或T_2
中的一个。
实体T_1
和T_2
之间没有业务联系,因此我不进行如下操作:
public interface BaseT { ... }
public class T_1 implements BaseT { ... }
public class T_2 implements BaseT { ... }
public class MyClass<T extends BaseT>
关于为什么要使用一个通用类,即使它们没有关联:
我正在定义(尝试)一个通用类,用于两者,因为即使它们明确无关,也存在隐含的关系,因为T_1
和T_2
都可以并且将会与MyClass
所代表的实体相关联。
T
在MyClass
、AnotherClass
和OtherClass
中是相同的,因此在一个实例中只有T_1
或T_2
,但从未同时存在。
我的问题是,除了为
MyClass
设计一个接口并分别对T_1
和T_2
进行实现之外,我还有哪些可选方案?我能否像这样实现一些东西:
MyClass<T extends T_1 or T_2>
?
顺祝商祺
MyClass<T, U>
或甚至MyClass<T, U, V>
有什么问题?这将允许您单独设置每种类型的边界。 - Robby CornelissenMyClass<T extends T1 or T2>
这样的东西? - Robby Cornelissencatch
块)。您需要使用一些包装器来模拟它。 - Thilo