当前位置:  开发笔记 > 编程语言 > 正文

为什么将Java接口方法声明为抽象?

如何解决《为什么将Java接口方法声明为抽象?》经验,为你挑选了4个好方法。

我今天使用Eclipse的"拉接口"重构功能来创建基于现有类的接口.提供的对话框用于创建新接口的所有新方法作为"抽象"方法.

那有什么好处?

我认为你被允许将接口方法声明为抽象的这一事实是该语言的一个多余且无害的特性,并不特别鼓励.

为什么Eclipse会支持这样的风格,或者为什么有人会自愿选择这样做呢?

澄清:我不是在问为什么界面方法是抽象的,这很明显.我在问为什么会明确地选择将它们标记为抽象,因为如果它们在界面中它们仍然是抽象的.



1> jdmichal..:

根据Java语言规范,abstract接口的关键字已过时,不应再使用.(第9.1.1.1节)

也就是说,由于Java具有向后兼容性的倾向,我真的怀疑这个abstract关键字是否存在会有所不同.


虽然这是最受欢迎的答案,但它指的是规范的错误部分; 9.1.1.1描述了接口本身声明的`abstract`关键字,而不是其成员.@ Will的答案是正确的,也包含有效的链接源.

2> VonC..:

"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".


很好找.因此,它可以解决Eclipse编译器中不再存在的问题.

3> Will..:

来自Java SE 7 JLS(Java语言规范):"允许但不鼓励作为样式,为接口中声明的方法冗余地指定公共和/或抽象修饰符."

对于Java SE 5.0:"为了与旧版本的Java平台兼容,允许但不鼓励,但作为一种风格,不要为接口中声明的方法冗余地指定抽象修饰符."



4> Daniel Hille..:

根据JLS方法,接口默认是抽象的,因此关键字是多余的.知道这一点,我永远不会用它来"避免表现性混乱".

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有