我們試圖用Guice重構一個項目。這個想法是將界面的所有界面綁定到像法國或波蘭這樣的混凝土物體。Guice注入空指針
我們有一個模塊綁定:
public class StandardModule extends AbstractModule {
@Override
protected void configure() {
bind(Language.class).to(Polish.class);
}
}
而一個CLASSE(AboutDialog.java)使用該注射對象:
@Inject Language language;
public AboutDialog(JFrame parent) {
super(parent, "", true);
this.language=language;
this.setTitle(language.getLanguageInUse().getString("AboutDialog.title"));
this.parent = parent;
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
pack();
}
我們有作爲的結果:
java.lang.NullPointerException at net.sf.jmoney.gui.AboutDialog.<init>(AboutDialog.java:67)
67行是:
this.setTitle(language.getLanguageInUse().getString("AboutDialog.title"));
我們的界面是:
public interface Language {
public ResourceBundle getLanguageInUse();
}
和波蘭類:
public class Polish implements Language {
private ResourceBundle languageInUse;
public Polish() {
languageInUse = ResourceBundle.getBundle(Constants.LANGUAGE_PL);
}
public ResourceBundle getLanguageInUse() {
return languageInUse;
}
}
我們輸了...
你應該改變你的代碼一點點,看看那裏的NPE被拋出 '代碼 資源包捆= language.getLanguageInUse(); 字符串標籤= bundle.getString(「AboutDialog.title」); ' –
空對象是語言。我們認爲注射不起作用。 – user1810567
你如何創建AboutDialog?我不認爲你正在與Guice創建對話框,因爲Guice需要一個空構造函數,或者你需要將jframe綁定到某個地方? –