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

Han*_*set 5 java generics interface

我不认为这是一个副本检查通用T是否实现了接口,但它可能是(??).

所以,我想创建一个通用接口,只允许实现两个接口的对象.相似的是一个costum接口.

public interface AbstractSortedSimpleList<T extends Comparable<T>, Alike> {}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,Java现在会尝试创建一个通用接口AbstractSortedSimpleList<T,Alike>,这不是我想要实现的.我想要AbstractSortedSimpleList<T>T必须实现两者Comparable<T>Alike.

后来,我想创建一个新课程

public class SortedSimpleList<T> implements AbstractSortedSimpleList<T> {}
Run Code Online (Sandbox Code Playgroud)

这里的要点是创建一个class SortedSimpleList<T>T必须实现上述接口的地方.但我的代码似乎不能很好地工作.

Roh*_*ain 5

您可以为类型参数提供多个边界:

public interface AbstractSortedSimpleList<T extends Comparable<T> & Alike>
Run Code Online (Sandbox Code Playgroud)

那么,你SortedSimpleList会是这样的:

class SortedSimpleList<T extends Comparable<T> & Alike> implements AbstractSortedSimpleList<T> {}
Run Code Online (Sandbox Code Playgroud)

JLS§4.4:

声明为类型参数的每个类型变量都有一个绑定.如果没有为类型变量声明绑定,则假定为Object.如果声明了绑定,则它包含:

  • 单个类型变量T,或

  • 类或接口类型T可能后跟接口类型I1&...&In.

注意:

但是,您不能拥有通配符的这种多重边界.它仅适用于类型参数.

参考文献:


Sot*_*lis 5

使用&符号的一些通用边界

interface AbstractSortedSimpleList<T extends Comparable<T> & Alike> {
Run Code Online (Sandbox Code Playgroud)

请参阅此处的多边界官方Java教程.