是否在互联网上进行了一些搜索,却找不到简单的答案。我的问题所在是在Android Framework中使用Java,但是我认为这也是标准的Java行为。我了解final
和private
的定义,它们都用于变量访问和修饰符。当说明要求我将变量初始化为final private
变量时,我正在关注一些代码和教程。以前没有看过,我改了一个private final
变量。后来,代码要求我在构造函数中初始化变量,显然它对private final
变量失败,因为它是不可变的。但是,当我将变量更改为final private
...时,它并没有失败,这引起了我的兴趣。有谁知道为什么会这样?
感谢您的回复!
最佳答案
Java语言规范的8.3.1. Field Modifiers部分说:
FieldModifier:
(one of)
Annotation public protected private
static final transient volatile
如果在字段声明中出现两个或多个(不同的)字段修饰符,则它是惯用的,尽管不需要,但它们以的顺序出现,与FieldModifier生产中的上面显示的顺序一致。这意味着
private final
是首选样式,但与final private
完全相同。