我今天使用Eclipse的"拉接口"重构功能来创建基于现有类的接口.提供的对话框用于创建新接口的所有新方法作为"抽象"方法.
那有什么好处?
我认为你被允许将接口方法声明为抽象的这一事实是该语言的一个多余且无害的特性,并不特别鼓励.
为什么Eclipse会支持这样的风格,或者为什么有人会自愿选择这样做呢?
澄清:我不是在问为什么界面方法是抽象的,这很明显.我在问为什么会明确地选择将它们标记为抽象,因为如果它们在界面中它们仍然是抽象的.
根据Java语言规范,abstract
接口的关键字已过时,不应再使用.(第9.1.1.1节)
也就是说,由于Java具有向后兼容性的倾向,我真的怀疑这个abstract
关键字是否存在会有所不同.
"eclipse的好处"(在接口方法声明中添加摘要)将是jdk1.3中jdt eclipse编译器的旧兼容性问题
从1.4开始,jdk库不再包含默认抽象方法(在实现接口的抽象类上).
这愚弄Eclipse 1.3编译器诊断,因为它们的实现依赖于它们的存在.
请注意,Javac 1.3将完全拒绝对1.4库执行(使用-bootclasspath选项).
由于Eclipse编译器可能处于1.4合规级别(请参阅参考资料Workbench>Preferences>Java>Compiler>JDK Compliance
),或者如果使用1.3合规性模式,则使用至少1.3个类库,因此在大多数当前的eclipse项目中不需要存在"abstract".
来自Java SE 7 JLS(Java语言规范):"允许但不鼓励作为样式,为接口中声明的方法冗余地指定公共和/或抽象修饰符."
对于Java SE 5.0:"为了与旧版本的Java平台兼容,允许但不鼓励,但作为一种风格,不要为接口中声明的方法冗余地指定抽象修饰符."
根据JLS方法,接口默认是抽象的,因此关键字是多余的.知道这一点,我永远不会用它来"避免表现性混乱".