首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较器中的比较(T,T)不能应用于(T,T)

比较器中的比较(T,T)不能应用于(T,T)
EN

Stack Overflow用户
提问于 2016-05-18 07:18:33
回答 2查看 1.9K关注 0票数 3

Intellij idea给了我一个错误:“比较器中的比较(T,T)不能应用于(T,T)”,用于下列代码:

代码语言:javascript
复制
public class LCCS<T extends Comparable<T>> {

    private Comparator<T> comparator;

    public LCCS(Comparator<T> comparator) {
        this.comparator = comparator;
    }


    /**
     * Loops the two given lists for finding the longest subequence
     *
     * @param list1 first list.
     * @param list2 second list.
     * @param <T>   list item type.
     * @return LCCS and the sublist indices of the subsequence in list1 and list2.
     */
    private <T> Subsequence<T> getLongestSubsequence(List<T> list1, List<T> list2) {
        Subsequence<T> output = null;
        for (int indexList1 = 0; indexList1 < list1.size(); indexList1++)
            for (int indexList2 = 0; indexList2 < list2.size(); indexList2++)
                if (comparator.compare((T)list1.get(indexList1), (T)list2.get(indexList2)) //Here comes the error
        output = inspectsubsequence(list1, list2, indexList1, indexList2, output);
        return output;
    }
}

我已经改变了参数化类型为T,它仍然显示给我的信息,但不是捕获只是T,任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-18 07:20:53

您有两个不同的泛型类型参数,名为T-一个在类级别,另一个在getLongestSubsequence方法中。这两个人没有关系,尽管他们的名字是一样的。因此,comparator.compare不接受与传递给getLongestSubsequence方法的列表的元素类型相同的参数类型。

例如,在当前编写类时,您可以创建一个LCCS<String>实例,然后使用两个List<Integer>参数调用getLongestSubsequence方法。然后,comparator.compare()需要两个String,而您的代码将传递给它两个Integer,这就是为什么您的代码没有通过编译。

只需从<T>的声明中删除getLongestSubsequence,这将导致它使用类级别的T

票数 4
EN

Stack Overflow用户

发布于 2016-05-18 07:21:15

在这里定义了类级别上的类型参数:

代码语言:javascript
复制
public class LCCS<T extends Comparable<T>> {

稍后,此代码为方法的作用域定义另一个名称为的类型参数;它阴影类级声明:

代码语言:javascript
复制
private <T> Subsequence<T> getLongestSubsequence(...

更改这段代码。让方法返回类级别的类型参数T

代码语言:javascript
复制
private Subsequence<T> getLongestSubsequence(...
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37292712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档