我不认为这是Check if a generic T implements an interface的副本,但它可能是(??)。
所以,我想创建一个通用接口,只允许实现两个接口的对象。相似是一个服装界面。
public interface AbstractSortedSimpleList<T extends Comparable<T>, Alike> {}
如果我理解正确,Java现在会尝试创建一个通用接口AbstractSortedSimpleList<T,Alike>
,这不是我想要实现的。我想要AbstractSortedSimpleList<T>
,其中T必须实现Comparable<T>
和Alike
。
后来,我想创建一个新类
public class SortedSimpleList<T> implements AbstractSortedSimpleList<T> {}
这里的要点是创建一个class SortedSimpleList<T>
,其中T必须实现上述接口。但我的代码似乎不能很好地工作。
答案 0 :(得分:5)
您可以为类型参数提供多个边界:
public interface AbstractSortedSimpleList<T extends Comparable<T> & Alike>
然后,您的SortedSimpleList
就像:
class SortedSimpleList<T extends Comparable<T> & Alike> implements AbstractSortedSimpleList<T> {}
请参阅JLS §4.4:
声明为类型参数的每个类型变量都有一个绑定。如果没有为类型变量声明绑定,则假定为Object。如果声明了绑定,则它包含:
单个类型变量T或
类或接口类型T可能后跟接口类型I1&amp; ......&amp;在
注意:强>
但是,您不能拥有通配符的多重边界。它仅适用于类型参数。
<强>参考文献:强>
答案 1 :(得分:5)
使用&
符号
interface AbstractSortedSimpleList<T extends Comparable<T> & Alike> {
请参阅有关多边界的官方Java教程here。