Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Guice Assisted:未绑定用@com.google.inject.assistedinject.Assisted(value=prefix)注释的java.lang.String的实现_Java_Dependency Injection_Guice_Guice 3 - Fatal编程技术网

Guice Assisted:未绑定用@com.google.inject.assistedinject.Assisted(value=prefix)注释的java.lang.String的实现

Guice Assisted:未绑定用@com.google.inject.assistedinject.Assisted(value=prefix)注释的java.lang.String的实现,java,dependency-injection,guice,guice-3,Java,Dependency Injection,Guice,Guice 3,我已经这样做了一百万次,但现在它不工作,我不知道为什么 我的界面定义了编写者的合同,如: 公共接口编写器{ void exit()抛出IOException; 无效写入(字符串行)引发IOException; } 具体实施: import com.google.inject.assistedinject.Assisted; 导入javax.inject.inject; 公共类TextFileWriter实现Writer{ //... @注入 公共TextFileWriter(@Assisted

我已经这样做了一百万次,但现在它不工作,我不知道为什么

我的界面定义了编写者的合同,如:

公共接口编写器{
void exit()抛出IOException;
无效写入(字符串行)引发IOException;
}
具体实施:

import com.google.inject.assistedinject.Assisted;
导入javax.inject.inject;
公共类TextFileWriter实现Writer{
//...
@注入
公共TextFileWriter(@Assisted(“store”)字符串存储、@Assisted(“prefix”)字符串前缀、@Assisted Line行、@Assisted LocalDate日期)引发IOException{
//...
}
//...
}
现在工厂:

公共接口WriterFactory{ Writer textWriter(字符串存储、字符串前缀、行、LocalDate)抛出IOException; } 最后是我的配置:

@覆盖
受保护的void configure(){
安装(新FactoryModuleBuilder()
.implement(Writer.class、TextFileWriter.class)
.build(WriterFactory.class)
);
}
在启动时,所有这些都会引发一个异常,即:

  • 使用注释的java.lang.String没有实现 @com.google.inject.assistedinject.Assisted(值=前缀)已绑定。
    查找带注释的java.lang.String时 @com.google.inject.assistedinject.Assisted(值=前缀) 用于daemons.filerecorder.TextFileWriter.(TextFileWriter.java:38)的第二个参数
    位于守护进程.filerecorder.WriterFactory.textWriter(WriterFactory.java:1) 在 com.google.inject.assistedinject.FactoryProvider2.initialize(FactoryProvider2.java:666) 在 com.google.inject.assistedinject.FactoryModuleBuilder$1.configure(FactoryModuleBuilder.java:335) (通过模块:com.google.inject.util.modules$OverrideModule-> modules.GuiceConfig-> com.google.inject.assistedinject.FactoryModuleBuilder$1)

  • 使用注释的java.lang.String没有实现 @com.google.inject.assistedinject.Assisted(value=store)已绑定。
    查找带注释的java.lang.String时 @com.google.inject.assistedinject.Assisted(value=store) 用于daemons.filerecorder.TextFileWriter.(TextFileWriter.java:38)的第一个参数
    位于守护进程.filerecorder.WriterFactory.textWriter(WriterFactory.java:1) 在 com.google.inject.assistedinject.FactoryProvider2.initialize(FactoryProvider2.java:666) 在 com.google.inject.assistedinject.FactoryModuleBuilder$1.configure(FactoryModuleBuilder.java:335) (通过模块:com.google.inject.util.modules$OverrideModule-> modules.GuiceConfig-> com.google.inject.assistedinject.FactoryModuleBuilder$1)

  • 到java.lang.String的绑定,用 @com.google.inject.assistedinject.Assisted(value=)已被删除 在守护进程.filerecorder.WriterFactory.textWriter()上配置。在 守护进程.filerecorder.WriterFactory.textWriter(WriterFactory.java:1)
    在 com.google.inject.assistedinject.FactoryProvider2.initialize(FactoryProvider2.java:666) 在 com.google.inject.assistedinject.FactoryModuleBuilder$1.configure(FactoryModuleBuilder.java:335) (通过模块:com.google.inject.util.modules$OverrideModule-> modules.GuiceConfig-> com.google.inject.assistedinject.FactoryModuleBuilder$1)

  • 有什么办法来完成这项工作吗

    提前感谢。

    @Assisted
    添加到界面的不明确
    字符串
    类型的参数中 工厂方法中缺少
    @Assisted
    参数。因此,调整如下:

    public interface WriterFactory {
      Writer textWriter(@Assisted("store") String store, @Assisted("prefix") String prefix, Line line, LocalDate date) throws IOException;
    }
    
    这一点在本节中进行了解释。这是必需的,因为您有两个类型相同的参数,
    String