java - Guice:@Nullable 拒绝与@Named 一起工作

标签 java dependency-injection guice nullable

我正在尝试在 Guice 中创建一个 @Named Integer 参数,它允许在没有值适用的情况下使用 null 值:

@Singleton
public class MyClass extends SomeOtherClass {
    @Inject
    MyClass(Object o, @Named("the name") @Nullable Integer myParam) {
        ...etc...
    }
}

@Provides
@Named("the name")
public Integer getParamName() {
    // Set to null for Not Applicable
    return null;
}

不幸的是,Guice 似乎不喜欢这样:

null returned by binding at my.package.ApplicationConfig$MyModule.getParamName()
 but parameter 1 of my.package.MyClass.<init>() is not @Nullable

我正在使用的 @Nullable 注释是 com.google.inject.internal.Nullable,它包含在 Guice 中并且确实有 @Retention( RetentionPolicy.RUNTIME).

不幸的是,我在 Stack Overflow 上发现的类似问题要么没有建设性,要么不适用。有什么想法吗?

最佳答案

我同意@yshavit。用 null 表示状态通常不是一个好主意。但是你应该能够让它工作。尝试改用 javax.annotation.Nullable。你可以在这里找到一个实现:

<dependency>
  <groupId>com.google.code.findbugs</groupId>
  <artifactId>jsr305</artifactId>
  <version>2.0.1</version>
  <type>jar</type>
</dependency>

关于java - Guice:@Nullable 拒绝与@Named 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17551843/

相关文章:

java - JTable 上的 JToolTip - 未显示

java - 为什么要在ActiveMQ中嵌入线程?

javascript - 在 AngularJS 中注入(inject)原始类型

php - 通过构造函数注入(inject)到对象中的依赖项太多了吗?

android - Dagger @Module 中的 "injects"应该放什么?

java - Errai Jax-RS 不发射

java - Google Guice & Jersey 在应用程序包过滤时对同一个 servlet 的多个 URL 模式

java - 从 Play 2.5.3 迁移到 Play 2.6.6 时出现 Guice CreationException

java - PageloadTimeout() 在带有 selenium 3.4 的 IE11 中不起作用

java - 使用 CQL 3.0 在集合上创建自定义索引