我有 2 个类,彼此具有泛型。但当他们在一起开会时,他们的参数化存在问题。以下是类(class):
public abstract class AView<T extends IController> {
protected T controller;
}
public abstract class AController<T extends AView> implements IController {
protected T view;
}
这里,AController应该参数化为<T extends AView<AController<T>>>
(但看起来太重载了?)
这是参数化示例:
public abstract class AWindowView<T extends AController> extends AView<T> {}
这里的AController应该参数化,但是怎么参数化呢?再说一遍,它会非常重载。也不建议使用通配符。
使用此代码的原因是为了在类里面对他们的 child 彼此进行引用。我之前的版本在 View 中的 Controller 中只有一个引用,并且该实现只有一个简单的泛型。但现在我不知道如何解决这个问题。
最佳答案
最通用的方法是让 View 和 Controller 都有两种类型参数,一种用于 View ,一种用于 Controller 。这样,每个事物都可以引用自身和另一个事物。
public abstract class AView<V extends AView<V, C>,
C extends AController<V, C>> {
protected C controller;
}
public abstract class AController<V extends AView<V, C>,
C extends AController<V, C>>
implements IController {
protected V view;
}
关于Java 类中的泛型相互交叉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20855288/