gpt4 book ai didi

java - guice FactoryModuleBuilder().implements() 是可选的吗?

转载 作者:行者123 更新时间:2023-11-30 08:32:21 25 4
gpt4 key购买 nike

class TestClass {
@Inject
public TestClass(String arg1, @Assisted String arg2) {
System.out.printf("TestClass(%s, %s)\n", arg1, arg2);
}
}


interface TestFactory {
TestClass makeTestClass(String extraArg);
}

class Main {
@Inject
public TestFactory factory;

public static void main(String[] args) {
Injector i = Guice.createInjector(
new AbstractModule() { @Override protected void configure() {
bind(String.class).toInstance("any string");
install(new FactoryModuleBuilder().build(TestFactory.class));
}}
);

Main m = i.getInstance(Main.class);

m.factory.makeTestClass("assisted");
}
}

此代码工作正常并打印“TestClass(any string, assisted)”

但是根据文档,我必须调用类似的东西

install(new FactoryModuleBuilder()
.implement(TestClassInterface.class, TestClass.class)
.build(TestFactory.class));

什么时候以及为什么我真的必须使用 implement()?仅何时命名绑定(bind)?

最佳答案

当您的工厂方法的返回类型与您希望 Guice 实例化的类型不同时,您需要使用 .implement()。如果您的工厂方法返回接口(interface)类型,通常会发生这种情况。您使用 .implement() 告诉 Guice 它应该创建的具体类类型。

关于java - guice FactoryModuleBuilder().implements() 是可选的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40156670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com