0

对此问题的评论:在 Java状态中迭代枚举的“for”循环:

@jacktrades:这是一种仅存在于编译器中的隐式方法。因此,基类不能声明具有相同名称的方法,因此它不会包含在自动生成的 Javadocs 中。docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2 – Torben 3 月 5 日 9:32

由于此方法仅存在于编译器中,这是否意味着它在 Enum 对象在 jdk1.5 中可用之前就存在?此方法是否存在于仅编译器的其他对象。java.util.Map 包含一个 values() 方法,但这是记录在案的,所以是明确的?为什么将此方法 .values 定义为隐式,这是对 Enum 类型有用的方法,因此它应该是显式的并且在 Enum 对象类型上可用?

4

1 回答 1

2

由于此方法仅存在于编译器中,这是否意味着它在 Enum 对象在 jdk1.5 中可用之前就存在?

不,它是为 Java 5 添加的。

此方法是否存在于仅编译器的其他对象。java.util.Map 包含一个 values() 方法,但这是记录在案的,所以是明确的?

那不一样。 Map.values()是一个普通的方法,Map接口的一部分。对于任何枚举类型,values() 都是静态方法。关键区别在于静态方法不是继承的,因此添加values()到 java.lang.Enum 不会有帮助。另一种隐式方法是[EnumType].valueOf(String name).

为什么将此方法 .values 定义为隐式,这是枚举类型的有用方法,所以它应该是显式的?

同样,它不可能是显式的,因为静态方法不是继承的。因为在. valueOf_ 我不确定为什么里面没有;这对我来说很有意义。但是有, 它做同样的事情。valueOf(class<T> type, name)java.lang.Enumvalues(class<T> type)Class.getEnumConstants()

于 2013-11-14T13:37:33.873 回答