仅允许实现其他接口的对象的通用接口
generic interface that only allows objects that implement other interfaces
我有一个接口 A
,并希望编写一个 通用 接口 B
,以便实现 [=12] 的任何 T
=] 还必须同时实现 A
和 Comparable
。 A
当前不是通用接口。
这可能吗?我需要使 A 通用吗?
我曾希望能够写出类似的东西:
public interface B<T implements Comparable, A> {}
但这似乎不起作用...任何人都可以指出我正确的方向吗?
我不认为这与已链接的问题重复。
只需让 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;
}
}
你要找的是multi-bounded generic types:
public interface B<T extends A & Comparable> {}
请注意,如果任一有界类型是 class
而不是 interface
,则它必须是 extends
之后定义的第一个边界。此外,您不能在多个 class
上使用多边界泛型类型(因为 Java 中没有多重继承)
我有一个接口 A
,并希望编写一个 通用 接口 B
,以便实现 [=12] 的任何 T
=] 还必须同时实现 A
和 Comparable
。 A
当前不是通用接口。
这可能吗?我需要使 A 通用吗? 我曾希望能够写出类似的东西:
public interface B<T implements Comparable, A> {}
但这似乎不起作用...任何人都可以指出我正确的方向吗?
我不认为这与已链接的问题重复。
只需让 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;
}
}
你要找的是multi-bounded generic types:
public interface B<T extends A & Comparable> {}
请注意,如果任一有界类型是 class
而不是 interface
,则它必须是 extends
之后定义的第一个边界。此外,您不能在多个 class
上使用多边界泛型类型(因为 Java 中没有多重继承)