繁体   English   中英

EnumMap的奇怪语法

[英]Weird syntax of an EnumMap

EnumMap定义如下:

Class EnumMap<K extends Enum<K>,V>

“K扩展Enum <K>”真正意味着什么?

我可以理解这个例子:

K extends Number

在这种情况下,K是扩展Number的任何类型的对象。 例如整数。

K extends Enum<K>是什么意思?

K extends Enum<K>引入了一个类型参数K ,它只能绑定到其第一类参数本身的Enum的子类型。

它是自引用的 ,并且在java.lang.Enum上重复同样的事情 - 它是为了确保正确的方法正确转换,请参阅java.lang.Enum.valueOf(Class,String)的定义。

这篇文章定义了一个AbstractBuilder, 是一个很好的(如果很长)类似用法的例子。

自引用泛型的另一个链接 (C#中的示例,但点是相同的)

Enum类定义为:

class Enum<E extends Enum<E>>

这意味着泛型类型本身就是一个枚举类。 这就是它在java语法中表达的方式。

JDK中有很多类似的例子,比如

<T extends Comparable<T>>

所有枚举类型的超类都是Enum<K> ,泛型参数是Enum<K>的类型。 从本质上讲,这用于确保K是枚举类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM