[問題] 為什麼存取final欄位不會觸發initializer
直接看例子
// Test.java
public class Test
{
public static final int CONST = 10;
static {
System.out.println("initializer in Test");
}
}
// Main.java
public class Main
{
public static void main(String[] args){
System.out.println("Main.main() is called.");
System.out.println(Test.CONST);
}
}
// Output:
Main.main() is called.
10
但去掉Test.CONST宣告中的final後, output就成為了:
Main.main() is called.
initializer in Test
10
雖然說Java語言規格中有說明到: 對類別或界面中的常數的存取不會觸發初始化
(§12.4.1)
但我還是想了解一下為什麼要做這樣的限制
是效能的考量嗎? 多謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.134.11
推
02/10 17:28, , 1F
02/10 17:28, 1F
→
02/10 19:59, , 2F
02/10 19:59, 2F
→
02/10 20:01, , 3F
02/10 20:01, 3F
→
02/10 20:14, , 4F
02/10 20:14, 4F
→
02/10 23:35, , 5F
02/10 23:35, 5F
→
02/11 02:27, , 6F
02/11 02:27, 6F
→
02/11 02:29, , 7F
02/11 02:29, 7F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章
109
134
63
106