Java 在Google Guice中使用参数执行函数

Java 在Google Guice中使用参数执行函数,java,guice,Java,Guice,我有以下模块要转换为Guice: Serializer serializer = new SerializerBinaryImpl("testdong"); Dong dong = new DongImplementation(); View view = new TextView(dong); dong.setSerializer(serializer); view.setDong(dong); 以下是我迄今为止的情况: bind(String.class).annotatedWith(Na

我有以下模块要转换为Guice:

Serializer serializer = new SerializerBinaryImpl("testdong");
Dong dong = new DongImplementation();
View view = new TextView(dong);
dong.setSerializer(serializer);
view.setDong(dong);
以下是我迄今为止的情况:

bind(String.class).annotatedWith(Name.class).toInstance("testdong"); 
bind(Serializer.class).to(SerializerBinaryImpl.class);
bind(Dong.class).to(DongImplementation.class);
bind(View.class).to(TextView.class);

//dong.setSerializer(serializer); - Not sure how to do      
//view.setDong(dong); - Not sure how to do

简单的解决方案是最好的解决方案。这只是一个简单的项目。

您必须使用
@Inject
对方法进行注释(这称为:

这不再是要在模块中执行的配置。Guice将自动注入:

  • 文本视图中的
    实现
  • 实现中的
    SerializerBinaryImpl

您的答案是正确的,但我发现我必须将dong设置为singleton,然后就可以了。如果您想在任何地方都使用相同的dong实例,则可以。
@Inject
public void setSerializer(Serializer serializer) {
    this.serializer = serializer;
}
@Inject
public void setDong(Dong dong) {
    this.dong = dong;
}