作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了以下 Java 代码。这里的接口(interface)包含两个方法,其中只有一个方法在枚举中实现。上面写着name()
是自动实现的。我的问题是这怎么可能?我之前没有读过任何关于枚举中自动方法实现的规则。那么这里发生了什么?此外,代码没有给出任何类型的编译时错误。
interface Named {
public String name();
public int order();
}
enum Planets implements Named {
Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune;
// name() is implemented automagically.
public int order() { return ordinal()+1; }
}
最佳答案
name()
在 Enum 类中定义,它满足您的接口(interface)约定,因此您不必定义 name()
,除非您当然想覆盖默认行为。
关于java枚举混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421824/
我是一名优秀的程序员,十分优秀!