两个通用接口需要彼此,如何正确实现它们?

时间:2014-06-10 20:48:51

标签: java generics interface

我想使用2个实现,但我不确定如何将每个实现传递给每个实现。这是我到目前为止所得到的:

A的界面:

public interface A<T extends A<T, U>, U extends B<T, U>>{
}

B界面:

public interface B<T extends A<T, U>, U extends B<T, U>> {
}

实施A:

public class AImpl<T extends B<AImpl<T>, T>> implements A<AImpl<T>, T>{
}

B的实施:

public class BImpl<T extends A<T, BImpl<T>>> implements B<T, BImpl<T>> {
}

现在我想使用A和B.我不确定如何实现它们。这是我最初的尝试:

主要:

//this doesn't work
private AImpl<BImpl> a; 
private BImpl<AImpl> b; 

public main() {
    a = new AImpl<BImpl>();
    b = new BImpl<AImpl>();
}

1 个答案:

答案 0 :(得分:1)

对于接口而言,继承对于类来说远没有那么有用。

建议: 只需重构和简化您的界面,这样您就不会 扩展除了类本身之外的所有内容!

更少,更小的接口;接口的浅层继承层次结构通常是一件好事。 IMHO ...