当前位置: 首页 > 面试题库 >

Java修饰符(抽象,最终,公共,静态等)的合理顺序是什么?

容寒
2023-03-14
问题内容

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给了我一个错误。 我做错了什么?如何将所有对象的最终变量设置为静态?