我正在調試Guice沒有調用構造函數的情況。 它成功執行Foo foo = injector.getInstance(Foo.class)
(Foo
是一個具體的類),並且調試器顯示foo
在此語句後不爲空......但尚未調用構造函數。Injector.getInstance()總是調用構造函數嗎?
foo
的所有字段都是空的,並且我沒有調用在磁盤上創建文件的構造函數中放置的語句。
沒有其他構造函數,並且Foo
不是單例 - 只是正常綁定。應用程序啓動時發生這種情況。 Foo
的構造函數是從來沒有運行 - 我提到它試圖在構造函數中創建的文件永遠不會創建,這意味着構造函數代碼永遠不會運行。
我在Play Framework的引導類中運行,試圖連接Guice在having some problems with Play's Guice Module之後使用它。
編輯 - 我剛剛發現我有一個失蹤@Inject的構造函數(它有參數,而@Inject是強制性這樣的構造函數)。但問題仍然有效 - 這裏發生了什麼? Guice是否創建了對象而不運行構造函數,還是Play?
'getInstance()'有可能返回一個緩存的(例如,先前構造的)實例。 –
@MДΓΓБДLL - 感謝上帝的自動完成暱稱。我編輯了這個問題 - 構造函數從未運行過 - 如果是這樣的話,它會在磁盤上創建一個文件。該模塊是空的,並且該對象沒有標記爲'@ Singleton',所以Guice本身不應該在這裏緩存任何東西。 – ripper234