如何定义实现两个接口的泛型类?

时间:2014-02-18 15:04:29

标签: java generics interface

我不认为这是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必须实现上述接口。但我的代码似乎不能很好地工作。

2 个答案:

答案 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