我正在使用Jersey 1.19
来使用Rest API。我的一个资源类有一个setter方法如下:
private Registrar<String, EventBatchDeserializer<?>> versionedDeserializer;
public void setVersionedDeserializer(Registrar<String, EventBatchDeserializer<?>> versionedDeserializer)
{
this.versionedDeserializer = versionedDeserializer;
}
注册商课程如下:
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对象并将其注入此资源类中:
<bean id="versionedDeserializer" class="a.b.c.d.Registrar">
</bean>
<property name="versionedDeserializer" ref="versionedDeserializer" />
现在,问题是泽西岛在正在使用注入注册商的setter上发出警告,即该setter的参数1无法解析为具体类型。
我正在使用Tomcat 8.0作为webapp。谁能告诉我为什么我收到这个警告,决议是什么?
答案 0 :(得分:0)
如果将EventBatchDeserializer
的类型参数中的通配符替换为具体类型,则警告应消失,例如,方法签名看起来像这样:
public void setVersionedDeserializer(Registrar<String, EventBatchDeserializer<Foo>> versionedDeserializer)
显然,这比通配符更具限制性。也许您可以使用Foo
界面。如果只有通配符满足您的需求,我想您必须接受警告。如果一切都按预期进行,则忽略它可能没有任何危害。