下面的示例類不編譯:爲什麼最終的實例變量需要初始化,當一個最終的局部變量沒有?
class Test {
final int x; // Compilation error: requires initialization.
}
此代碼的編譯錯誤信息是:
..\src\pkgs\main\Test.java:3: error: variable x might not have been initialized
class Test {
^
然而,Java不會生成包含下面的方法的類的任何錯誤信息:
class Test {
void method() {
final int x; // Compiles OK; has no initialization.
}
}
有關初始化和要求,爲什麼Java的治療最終我nstance變量和最終局部變量的區別?謝謝。
爲什麼很難知道。一個可能的參數:最終變量必須在使用之前初始化 - 如果不使用,則不需要初始化。最後一個字段必須在構造函數的末尾進行初始化 - 此時對象及其所有字段都可供任何人使用,編譯器不應該英勇地解決它是否可能被訪問。 –