Java修饰符的合理顺序是什么?
更新资料
我已将措辞从“ 建议” 更改为“ 合理” ,以使讨论是否平静,无论是否建议使用该命令。
Java语言规范(而不是Java虚拟机规范)中提到了修饰符的
习惯
用法顺序,例如,对于类修饰符,您将找到以下定义(摘录):
ClassModifiers: ClassModifier ClassModifiers ClassModifier ClassModifier: one of Annotation public protected private abstract static final strictfp
[....]
如果两个或更多个(不同的)类修饰符出现在类声明中,则习惯上尽管不是必需的,但它们的出现顺序与上面在ClassModifier生产中显示的顺序一致。(该段落底部的小文本!)
您可以在指定修饰符使用的其他几个地方找到该句子,例如在此处用于字段修饰符。
更新 :我将“指定/推荐”替换为“常规”,以使其成为可以接受的答案。如果您阅读注释,请考虑到这一点;-)(感谢@EJP使其清楚)-尽管如此,
我 还是 建议 您使用 习惯 顺序。
Google还建议
使用Java规范中提到的习惯顺序。
public / protected / private
abstract
static
final
transient
volatile
synchronized
native
strictfp
更新 :OpenJDK社区中的项目有一个新的“
Java样式指南
”倡议。它还建议使用修饰符顺序,还包括Java
8的新默认修饰符。
public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp
Java修饰符的合理顺序是什么? null 我把建议的字眼改为合理的字眼,是为了平息有关命令是否建议的讨论。
我有一个抽象类的许多子类,每个子类都声明了一个同名的公共静态final字段。我在考虑在抽象超类中包含这个字段,而不初始化它,并希望每个子类都能被强制初始化它。 我之所以这么想,是因为抽象类的所有子类都声明了一个名为UNIQUE_ID的公共静态最终字符串字段,并且每个子类都有必要声明一个具有该名称的字段。 我希望我的问题足够清楚,如果不清楚,请告诉我。 能不能做一些和这个差不多的事情? 编辑:添加代
问题内容: 我一直想知道Java中的单例。按照惯例,单例设置如下: 最近,我切换到使用以下内容: 由于没有空检查,因此它更短,更快捷,而且打字对我来说比打字好。有什么理由不能使第二种方法成为主流呢? 问题答案: 第一个版本在第一次实际需要时创建实例,而第二个版本(较短的版本)在初始化类后立即运行构造函数 类或接口类型T将在以下任何一种首次出现之前立即初始化: T是一个类,并创建T的实例。 T是一个
文档说修饰符是从左侧应用的。但从这个例子来看,它们看起来像是从右边应用的:首先是边框,然后是填充,因为文本和边框之间没有空格
问题内容: 开闭原则指出:“软件实体(类,模块,功能等)应为扩展而开放,而为修改而封闭”。 但是,约书亚·布洛赫(Joshua Bloch)在其著名的著作《有效的Java》中给出了以下建议:“设计和文档化继承,否则禁止继承”,并鼓励程序员使用“最终”修饰符禁止子类化。 我认为这两个原则显然彼此矛盾(我错了吗?)。编写代码时遵循什么原则?为什么?您是否让类保持打开状态,禁止继承其中的某些类(哪些?)
我是Java的初学者。我正在学习最终变量,并尝试了这段代码。 然而,Eclipse给了我一个错误。 我做错了什么?如何将所有对象的最终变量设置为静态?