2017-02-12 58 views
2

the official document,你可以看到這個關於田間注射的句子。田間注射與Guice最後一場

避免對最終字段使用字段注入,其中weak semantics

爲什麼不使用最終修飾詞的字段注入有意義? 任何人都可以解釋嗎?

+1

從鏈接文檔:「_在任何其他上下文中使用可能會有不可預知的影響,包括程序的其他部分繼續使用該字段的原始值的情況。對我來說,這似乎是一個壞主意。 –

+1

相關:http://stackoverflow.com/a/3301720/1553851。請參閱**警告**。 – shmosel

+0

@BoristheSpider你引用什麼是錯誤的? –

回答

2

你基本上會問以下問題:「弱語義」是什麼意思?

一般來說,正如你所指出的,「語義」是「意義」。此外,在編程中semantics指的是:

嚴謹...研究編程語言的含義。

當我們說「注入最終字段具有弱語義」時,這意味着「注入最終字段會導致難以嚴格推理您的程序的含義。」

爲什麼?正如鮑里斯蜘蛛的評論指出,「弱語義」是指this behaviour

使用於其他任何情況下[比連載] [設定使用反射的最終場]可能有難以預料的影響,其中包括案件其中一個程序的其他部分繼續使用該字段」的原始值

這意味着,如果你使用反射來設置final場,你的程序的意思(語義)顯得模糊不清,因爲它現在有不可預測的行爲

不可預測的在鏈接的文檔中提到了正確的行爲:程序的其他部分可以繼續使用final字段的原始值。它不清楚程序的哪些部分正在使用原始值,哪些部分正在使用重新分配的值。