Google Guice 绑定不适用于 Integer 和 Long

Google Guice binding not working with Integer and Long

使用 Google Guice 时出错。

在 java.lang.Long 中找不到合适的构造函数。 类 必须有一个(而且只有一个)用 @Inject 注释的构造函数或一个非私有的零参数构造函数。 在 java.lang.Long.class

class DIModule extends AbstractModule {
   protected void configure(){
      bind(Long.class).annotatedWith(Names.named("seconds")).toInstance(1574965800000L);
   }
}

构造函数使用lombok

@AllArgsConstructor (onConstructor_ = { @Inject })
class Cat{
   @Named("seconds")
   private Long time;
}

但是下面的一个没有错误。

class Cat{
  private Long time;
  @Inject
  public Cat(@Named("seconds") Long time){
     this.time = time;
  }
}

有人可以向我解释如何让它与 Lombok 一起工作吗?

您应该能够通过添加 lombok.copyableAnnotations to your lombok.config 文件将字段上的 @Named 注释的所有实例复制到相应的构造函数参数,如下所示:

lombok.copyableAnnotations += com.google.inject.name.Named