Java 什么是编译器隐式方法?
对这一问题的评论如下: @jacktrades:它是一种隐式方法,只存在于 编译器。因此,基类不能用 相同的名称,因此它不会自动包含在 生成的Javadocs。 docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2– 3月5日9:32托本Java 什么是编译器隐式方法?,java,enums,Java,Enums,对这一问题的评论如下: @jacktrades:它是一种隐式方法,只存在于 编译器。因此,基类不能用 相同的名称,因此它不会自动包含在 生成的Javadocs。 docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2– 3月5日9:32托本 由于此方法仅存在于编译器中,这是否意味着它在Enum对象在jdk1.5中可用之前就存在?对于仅为编译器的其他对象,是否存在此方法。java.util.Map包含values()方法,但这是
由于此方法仅存在于编译器中,这是否意味着它在Enum对象在jdk1.5中可用之前就存在?对于仅为编译器的其他对象,是否存在此方法。java.util.Map包含values()方法,但这是有文档记录的,所以是显式的?为什么要将此方法定义为隐式。值,这是枚举类型上有用的方法,因此它应该是显式的,并且在枚举对象类型上可用?因为此方法仅存在于编译器中,这是否意味着它在枚举对象在jdk1.5中可用之前就存在? 不,它是为Java5添加的 此方法是否仅适用于其他编译器对象。java.util.Map包含values()方法,但这是有文档记录的,因此是显式的? 那不一样
Map.values()
是一种普通方法,是Map
接口的一部分。对于任何枚举类型,values()都是静态方法。关键的区别在于静态方法不会被继承,因此将values()
添加到java.lang.Enum将不会有帮助。另一个隐式方法是[EnumType].valueOf(字符串名称)
为什么要定义此方法。值是隐式的,这是枚举类型上的一个有用方法,因此它应该是显式的?
同样,它不可能是显式的,因为静态方法不是继承的。对于
valueOf
在java.lang.Enum
中有一个模拟valueOf(类类型、名称)
方法。我不确定为什么那里没有值(类类型)
;这对我来说是有意义的。但是有一个Class.getEnumConstants()
,它做同样的事情。有一个Class.getEnumConstants()
。