हम गुइस के साथ एक परियोजना को दोबारा करने की कोशिश करते हैं। विचार भाषा इंटरफ़ेस को फ़्रेंच या पोलिश जैसे एक ठोस वस्तु के लिए बाध्य करना है।गिइस इंजेक्शन नल पॉइंटर
हम बंधन के लिए एक मॉड्यूल है:
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;
}
}
हम खो रहे हैं ...
आप अपने कोड जहां एनपीई फेंक दिया जाता है एक छोटा सा, देखने के लिए बदलना चाहिए 'कोड ResourceBundle बंडल = language.getLanguageInUse();।। स्ट्रिंग लेबल = bundle.getString (" AboutDialog.title "); ' –
शून्य वस्तु भाषा है। हम सोचते हैं कि इंजेक्शन काम नहीं करता है। – user1810567
आप aboutDialog कैसे बनाते हैं? मुझे नहीं लगता कि आप गुइस के साथ संवाद बना रहे हैं, क्योंकि गुइस को एक खाली कन्स्ट्रक्टर की आवश्यकता है या आप कहीं कहीं jframe बांधते हैं? –