java - Google Guice 绑定不适用于 Integer 和 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.config文件,@Named
将字段上的所有注释实例复制到相应的构造函数参数,如下所示:lombok.copyableAnnotations
lombok.copyableAnnotations += com.google.inject.name.Named
推荐阅读
- amazon-web-services - 无法创建 AWS CloudFormation“入门”示例堆栈
- wso2 - 如何使用 WSO2 API Manager 实现 OAuth2 授权
- ios - OHHTTPStubs 单元测试实现
- javascript - Javascript-JQuery | 如何解析 HTML 文本区域并从文本框中输入值?
- swift - 获取当前 Firebase 云消息传递注册令牌错误
- c - 如果声明了 int A[5] 那么只有 A 是指向 A[0] 的指针。这意味着 A 只是一个指针。那么 sizeof(A) 怎么会给出 20 的答案
- dart - 飞镖转换地图
- c# - Optano.Modeling 不适用于 MipCL
- javascript - 将 jQuery 对象复制到模态,然后隐藏或显示,然后显示
- javascript - react / redux无法读取未定义的属性'setCurrent'