我有以下的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
有实体之间不businnes关系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>
?
亲切的问候
也许,这不正是您需要的信息,但你可能会试一试:
创建一个abstract
通用类,它实现的一切:
public abstract class MyClass<T>
{
AnotherClass<T> another;
OtherClass<T> other;
// Add any code needed
}
然后创建两个基类2泛型类。
这些类可能是空的,如果所有的代码可以在抽象的实现:
public class MyT1Class<T extends T_1> extends MyClass<T>
{
}
public class MyT2Class<T extends T_2> extends MyClass<T>
{
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句