我们尝试用Guice重构一个项目.这个想法是将所有的语言界面绑定到像法语或波兰语这样的混合对象.
@H_301_2@我们有一个绑定模块:
public class StandardModule extends AbstractModule { @Override protected void configure() { bind(Language.class).to(Polish.class); } }@H_301_2@和一个使用这个注入对象的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(); }@H_301_2@我们也有结果:
java.lang.NullPointerException at net.sf.jmoney.gui.AboutDialog.<init>(AboutDialog.java:67)@H_301_2@第67行是:
this.setTitle(language.getLanguageInUse().getString("AboutDialog.title"));@H_301_2@我们的界面是:
public interface Language { public ResourceBundle getLanguageInUse(); }@H_301_2@波兰班是:
public class Polish implements Language { private ResourceBundle languageInUse; public Polish() { languageInUse = ResourceBundle.getBundle(Constants.LANGUAGE_PL); } public ResourceBundle getLanguageInUse() { return languageInUse; } }@H_301_2@我们迷路了…