我有一个界面A
,并希望编写通用界面B
,以便实现T
的任何B
也必须同时实施了A
和Comparable
。 A
目前不是通用接口。
这可能吗?我需要制作通用的吗? 我曾希望能写出类似的东西:
public interface B<T implements Comparable, A> {}
但这似乎不起作用......有人能指出我正确的方向吗?
我不相信这与已经链接的问题重复。
答案 0 :(得分:1)
只需让B扩展A和Comparable。
public interface A {
public void methodA();
}
public interface B<T> extends A, Comparable<T> {
public T methodB();
}
public class BImpl<T> implements B<T> {
@Override
public T methodB() {
return null;
}
@Override
public void methodA() {
}
@Override
public int compareTo(T o) {
return 0;
}
}
答案 1 :(得分:1)
您在这里寻找的是multi-bounded generic types:
public interface B<T extends A & Comparable> {}
请注意,如果有界类型中的任何一个是class
而不是interface
,则必须是extends
之后定义的第一个边界。此外,您不能在多个class
上使用多边界泛型类型(因为Java中没有多重继承)