用方括号将方法引用括起来是什么意思?

我使用的是Java 8。我知道这是一些新功能,如lambda,方法引用等。但是我对这段代码感到困惑:


static class SRoad implements Comparable<SRoad> {

    int id;


    public SRoad(int id) {

        this.id = id;

    }


    @Override

    public int compareTo(SRoad o) {

        return this.id - o.id;

    }

}


public static void main(String[] args) {


    ArrayList<SRoad> c = new ArrayList<>();

    // Assume I added some instances in to the list...

    c.sort((SRoad::compareTo));

}

上面的代码基本上根据它的id对SRoad列表进行排序。请注意,在最后一行中,方法引用用一对额外的括号括起来。这不是一个错别字,它必须像这样才能使java工作。我发现这行代码相当于:


c.sort(((o1, o2) -> o1.compareTo(o2)));

为什么它们是等价的?这是什么语法?


九州编程
浏览 71回答 1
1回答

慕容708150

额外的括号集是多余的。你可能会失去它们:c.sort(SRoad::compareTo);关于语法 - 有一个参数。此方法采用您正在排序的列表的任意两个元素并对其进行比较。两种方式都传递这样的方法引用。sortComparator
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java