Java 如何在Guice中传递构造函数参数

Java 如何在Guice中传递构造函数参数,java,guice,Java,Guice,我有一个秋千课: public class PopUpContextMenu extends JPopupMenu { public PopUpContextMenu() { super(); JMenuItem loginMenuItem = new LoginMenuItem("Login"); JMenuItem logoutMenuItem = new LogoutMenuItem("Logout"); add(l

我有一个秋千课:

public class PopUpContextMenu extends JPopupMenu {
    public PopUpContextMenu() {
        super();

        JMenuItem loginMenuItem = new LoginMenuItem("Login");
        JMenuItem logoutMenuItem = new LogoutMenuItem("Logout");
        add(loginMenuItem);
        add(logoutMenuItem);
    }
}
我想把它改为使用Guice,这样两个“new”语句就可以删除了。我想要像这样的东西:

public class PopUpContextMenu extends JPopupMenu {
    @Inject
    public PopUpContextMenu(JMenuItem loginMenuItem, JMenuItem logoutMenuItem) {
        super();
        add(loginMenuItem);
        add(logoutMenuItem);
    }
}
我的问题是如何在Guice中配置绑定,以便在构造LoginNuItem时传递字符串“Login”,在构造logoutMenuItem时传递字符串“Logout”


非常感谢

您可以使用
@Named
注释:

在你们班:

@Inject
@Named("LOGIN")
JMenuItem loginMenuItem;

@Inject
@Named("LOGOUT")
JMenuItem logoutMenuItem
因此,在Guice module configure()方法中,您可以执行以下操作:

bind(JMenuItem.class).annotatedWith(Names.named("LOGIN")).toInstance(new LoginMenuItem("Login"));
bind(JMenuItem.class).annotatedWith(Names.named("LOGOUT")).toInstance(new LoginMenuItem("Logout"));

您可以使用
@Named
注释:

在你们班:

@Inject
@Named("LOGIN")
JMenuItem loginMenuItem;

@Inject
@Named("LOGOUT")
JMenuItem logoutMenuItem
因此,在Guice module configure()方法中,您可以执行以下操作:

bind(JMenuItem.class).annotatedWith(Names.named("LOGIN")).toInstance(new LoginMenuItem("Login"));
bind(JMenuItem.class).annotatedWith(Names.named("LOGOUT")).toInstance(new LoginMenuItem("Logout"));