【问题标题】:Jersey warning - Not resolvable to a concrete type泽西警告 - 无法解析为具体类型
【发布时间】:2015-09-21 04:00:41
【问题描述】:

我将 Jersey 1.19 用于 Rest 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 对象并将其注入到这个资源类中:

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


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

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

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

【问题讨论】:

    标签: java spring generics jersey warnings


    【解决方案1】:

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

    public void setVersionedDeserializer(Registrar<String, EventBatchDeserializer<Foo>> versionedDeserializer)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 2017-02-11
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2015-10-22
      相关资源
      最近更新 更多