我有一个Swing课程:
public class PopUpContextMenu extends JPopupMenu {
public PopUpContextMenu() {
super();
JMenuItem loginMenuItem = new LoginMenuItem("Login");
JMenuItem logoutMenuItem = new LogoutMenuItem("Logout");
add(loginMenuItem);
add(logoutMenuItem);
}
}
我想改变它以使用Guice,以便可以删除两个“新”语句。我想要这样的东西:
public class PopUpContextMenu extends JPopupMenu {
@Inject
public PopUpContextMenu(JMenuItem loginMenuItem, JMenuItem logoutMenuItem) {
super();
add(loginMenuItem);
add(logoutMenuItem);
}
}
我的问题是如何在Guice中配置绑定,以便在构造loginMenuItem时可以传递字符串“Login”,并在构造logoutMenuItem时传递字符串“Logout”?
非常感谢
答案 0 :(得分:1)
您可以使用@Named
注释:
在你班上:
@Inject
@Named("LOGIN")
JMenuItem loginMenuItem;
@Inject
@Named("LOGOUT")
JMenuItem logoutMenuItem
然后在您的Guice模块configure()方法中执行:
bind(JMenuItem.class).annotatedWith(Names.named("LOGIN")).toInstance(new LoginMenuItem("Login"));
bind(JMenuItem.class).annotatedWith(Names.named("LOGOUT")).toInstance(new LoginMenuItem("Logout"));