簡體   English   中英

比較器<String>必須覆蓋超類方法

[英]Comparator<String> must override super class method

我正在制作一個TreeMap<String, String>並希望以降序排序。 我創建了以下比較器:

Comparator<String> descender = new Comparator<String>() {

    @Override
    public int compare(String o1, String o2) {
        return o2.compareTo(o1);
    }
};

我像這樣構造TreeMap:

myMap = new TreeMap<String, String>(descender);

但是,我收到以下錯誤:

The method compare(String, String) of type new Comparator<String>(){} must override a superclass method

我從未完全弄清楚仿制葯,我做錯了什么?

您的Eclipse項目顯然已設置為Java 1.5。 然后,接口方法確實不支持@Override注釋。 刪除該批注或將項目的合規性級別修復為Java 1.6。

如果您只想反轉自然(升序)排序,則無需編寫自定義Comparator

要獲得降序排序,請使用:

myMap = new TreeMap<String, String>(java.util.Collections.reverseOrder());

啊,我發現了問題。 在實例化Comparable的新匿名實例時,我沒有覆蓋接口方法......我正在實現它們。 @Override指令是問題所在。 compare()方法沒有覆蓋現有方法,它正在實現接口的一部分。 我從其他地方復制了該代碼,它不應該有@Override。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM