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

Pke*_*oqo 5 java generics spring warnings jersey

我正在使用Jersey 1.19for Rest API.我的一个资源类有一个setter方法如下:

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

public void setVersionedDeserializer(Registrar<String, EventBatchDeserializer<?>> versionedDeserializer) 
{
    this.versionedDeserializer = versionedDeserializer;
}
Run Code Online (Sandbox Code Playgroud)

注册员类如下:

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);
}
}
Run Code Online (Sandbox Code Playgroud)

现在,我正在创建registar对象并将其注入此资源类中:

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


<property name="versionedDeserializer" ref="versionedDeserializer" />
Run Code Online (Sandbox Code Playgroud)

现在,问题是泽西岛在正在使用注入注册器的setter上发出警告,即该setter的参数1无法解析为具体类型.

我正在使用Tomcat 8.0作为webapp.谁能告诉我为什么我收到这个警告,决议是什么?

Mar*_*tin 0

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

\n
public void setVersionedDeserializer(Registrar<String, EventBatchDeserializer<Foo>> versionedDeserializer)\n
Run Code Online (Sandbox Code Playgroud)\n

显然这比通配符更具限制性。也许你可以使用一个Foo接口。如果只有通配符满足您的需求,我想您必须接受警告。如果一切按预期工作,\xe2\x80\x99s 忽略它可能没有什么坏处。

\n