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
使用 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