有两个类层次结构通用类

豪尔赫·拉文:

我有以下的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_1T_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将是同样的MyClassAnotherClass并且OtherClass因此,在一个实例只会有两种T_1T_2但从来没有同时在同一时间。

我的问题是,我有一个选择呢,这里比其他设计为一个接口MyClass,并实现它都T_1T_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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章