java - 泽西警告 - 无法解析为具体类型

标签 java spring generics jersey warnings

我正在使用 Jersey 1.19用于休息 API。我的一个资源类有一个 setter 方法,如下所示:

private Registrar<String, EventBatchDeserializer<?>> versionedDeserializer;

public void setVersionedDeserializer(Registrar<String, EventBatchDeserializer<?>> versionedDeserializer) 
{
    this.versionedDeserializer = versionedDeserializer;
}

Registrar类如下:
public class Registrar<K, V>
{
private ConcurrentHashMap<K, V> registeredItems;

public Registrar()
{
    this.registeredItems = new ConcurrentHashMap<K, V>();
}

public void register(K key, V value)
{
    registeredItems.put(key, value);
}

public V getRegisteredItem(K key)
{
    return registeredItems.get(key);
}
}

现在,我正在创建 registar 对象并将其注入(inject)到这个资源类中,如下所示:

<bean id="versionedDeserializer" class="a.b.c.d.Registrar">
    </bean>


<property name="versionedDeserializer" ref="versionedDeserializer" />

现在,问题是 Jersey 对正在用于注入(inject)注册器的 setter 发出警告,即该 setter 的参数 1 无法解析为具体类型。

我正在为 webapp 使用 Tomcat 8.0。谁能告诉我为什么我会收到此警告,解决方案是什么?

最佳答案

如果替换 EventBatchDeserializer 的类型参数中的通配符,警告应该会消失。使用具体类型,例如方法签名可能如下所示:

public void setVersionedDeserializer(Registrar<String, EventBatchDeserializer<Foo>> versionedDeserializer)
显然,这比通配符更具限制性。也许你可以使用 Foo界面。如果只有通配符符合您的需求,我想您必须接受警告。如果一切都按预期工作,那么忽略它可能没有害处。

关于java - 泽西警告 - 无法解析为具体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31204634/

相关文章:

java - 通过 Tomcat 7 运行 HtmlUnit

java - 在 Spring WebFlow 中转发请求

java - Spring Autowire - 需要接口(interface)和实现 DAO 类吗?

C _Generic 默认返回参数

java - 从 Java 中的 HashMap 中删除重复值

java - 从 eclipse 运行配置中提取命令行参数

Spring JPA 存储库查找所有不存在的内容

swift - 为什么其各自类型参数符合继承关系的泛型类型本身不符合类似关系?

c# - 是否可以在抽象类的工厂方法中重写泛型类型?

java - java中的相对频率