我们试图用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绑定到某个地方? –