4
在下面的代碼中,需要用「Inject」註釋我的基類的構造函數嗎?如果基類是一個抽象類呢?Java和Guice - 如何處理繼承和抽象?
使用DI時,是否需要在構造函數中調用super?
public class Base {
@Inject
public Base(IConfig config) {
// Do stuff
}
}
public class A extends Base {
@Inject
public A(IConfig config) {
super(config);
}
}
爲什麼你想擴展一個具體的注射類?我親眼看到大多數情況下,人們試圖通過其他方式來解決問題。例如,如果要改變構造函數params的提供方式,那麼類似'@Proced'方法的工作往往會更好。如果要覆蓋具體的方法,那就表明基類沒有解決實際的用例,並且需要重新設計。 Guice最佳實踐wiki對'@Inject public'構造函數發出警告(請參閱http://code.google.com/p/google-guice/wiki/KeepConstructorsHidden) – 2012-06-04 20:00:27