首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建只允许特定类扩展/实现它的泛型类型

如何创建只允许特定类扩展/实现它的泛型类型
EN

Stack Overflow用户
提问于 2020-07-16 12:51:36
回答 1查看 36关注 0票数 2

例如,我想创建一个通用接口IEnum,并确保每个枚举实例也是一个枚举常量,换句话说,只有枚举类型可以实现IEnum。java是否支持这样的特性,或者是否可以通过任何变通方法来实现?它可以通过递归的有界类型参数来实现吗?

EN

回答 1

Stack Overflow用户

发布于 2020-07-16 12:57:13

您可以使用递归有界类型参数和联合类型参数来强制传递的泛型类是Enum并实现IEnum

代码语言:javascript
复制
public interface IEnum<E extends Enum<E> & IEnum<E>> {}

注意:顺序很重要,因此第一个类型可以是类或接口,但它后面的所有内容都必须是接口。

然后您可以像这样使用它:

代码语言:javascript
复制
public enum Foo implements IEnum<Foo> {}

遗憾的是,您不能强制实现类将自身作为类型参数传递,例如,这将会起作用:

代码语言:javascript
复制
public class Bar implements IEnum<Foo> {}

同样,你也不能限制实现不使用原始类型,例如,这也可以:

代码语言:javascript
复制
public class Baz implements IEnum {}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62927673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档