java - 如何限制通用数据结构以仅允许特定接口(interface)的元素?

标签 java generics interface limit

假设我想创建一个通用类来存储对象,但它只能存储实现特定接口(interface)的对象。 界面是这样的:

interface GenericSortedList<E> extends Iterable {    
   void add(E e);
   E get(String key);
}

GenericSortedList 的实例只允许包含实现接口(interface)Comparable 的对象。我是怎么做到的?

最佳答案

您可以在类型参数 E 上引入上限。

interface GenericSortedList<E extends Comparable<E>> extends Iterable<E>

还要确保将 E 作为类型参数传递给 Iterable,否则它将扩展 Iterable 接口(interface)的原始形式。

为了使其更加灵活,您可以在 Comparable 内的 E 上放置一个通配符和一个下限。

interface GenericSortedList<E extends Comparable<? super E>> extends Iterable<E>

这样,一个父类(super class)

class Foo implements Comparable<Foo>

及其子类

class Bar extends Foo

可以满足E的限制。

关于java - 如何限制通用数据结构以仅允许特定接口(interface)的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28889201/

相关文章:

java - 开发 Jenkins 构建后插件

c# - 不是可以从通用列表分配通用 IList 吗?

javascript - 跨组件强制执行参数值限制

java - JTextField 的 getText() 到可打印变量

Java 对已添加的对象进行更改

java - 根据通用类型创建对象

java - 所有变体方法重写

java - UML 类图,关联 : class -> interface

Java继承;将子类传递给父类(super class)的抽象方法

java - Hibernate 无法解析嵌入类的属性