泛型出现意外的绑定错误

时间:2014-05-05 10:38:33

标签: java generics

我尝试编写接受实现(my)HasId接口的任何元素列表的方法,并返回给定Id的元素。但出于某种原因,我得到了#34;意外的绑定"编译错误。

public abstract class HasIdUtil<T> extends AbstractTestNGSpringContextTests {

protected T findById(List<T extends HasId> hasIdList, String id) {
    for (T item : hasIdList) {
        if (id.equals(item.resolveId())) {
            return item;
        }
    }

    throw new ElementNotFoundException("There are no elements with id = " + id + " in given list");
}
}

这是我的界面:

public interface HasId<T> {
     T resolveId();
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我应该指定HasId&lt; TYPE&gt;并制作了通用密钥K. 下面的代码可以按照我的意愿工作。

public abstract class HasIdUtil<V extends HasId<K>, K> extends AbstractTestNGSpringContextTests {

protected V findById(List<? extends V> hasIdList, K id) {
    for (V hasId : hasIdList) {
        if (id.equals(hasId.resolveId())) {
            return hasId;
        }
    }

    throw new ElementNotFoundException("There are no elements with id = " + id + " in given list");
}

}