Próbujemy refakturować projekt za pomocą Guice. Chodzi o to, aby związać cały interfejs Język z konkretnym obiektem, takim jak Francuski lub Polski.Wskaźnik zerowania guice Guine
Mamy moduł do wiązania:
public class StandardModule extends AbstractModule {
@Override
protected void configure() {
bind(Language.class).to(Polish.class);
}
}
A Classe (AboutDialog.java), które wykorzystują tę wstrzykuje obiektu:
@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();
}
I mamy w wyniku:
java.lang.NullPointerException at net.sf.jmoney.gui.AboutDialog.<init>(AboutDialog.java:67)
Linia 67 to:
this.setTitle(language.getLanguageInUse().getString("AboutDialog.title"));
Nasz interfejs jest:
public interface Language {
public ResourceBundle getLanguageInUse();
}
A polska klasa:
public class Polish implements Language {
private ResourceBundle languageInUse;
public Polish() {
languageInUse = ResourceBundle.getBundle(Constants.LANGUAGE_PL);
}
public ResourceBundle getLanguageInUse() {
return languageInUse;
}
}
Jesteśmy zgubieni ...
należy zmienić kod trochę, aby zobaczyć gdzie jest wyrzucane NPE 'kod ResourceBundle bundle = language.getLanguageInUse();.. label String = bundle.getString ("AboutDialog.title"); ' –
Obiektem zerowym jest język. Uważamy, że zastrzyk nie działa. – user1810567
Jak utworzyć AboutDialog? Nie wydaje mi się, że tworzysz okno dialogowe z Guice, ponieważ Guice potrzebuje pustego konstruktora, czy też gdzieś zaciągasz jframe? –