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

问题描述 投票:0回答:1

我正在使用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)));

为什么它们相同?这个语法是什么?

java lambda syntax java-8 method-reference
1个回答
2
投票

额外的括号集是多余的。你可能会失去它们:

c.sort(SRoad::compareTo);

关于语法-sort有一个Comparator参数。这是一种方法,它采用您正在排序的列表中的任何两个元素并进行比较。两种方式都通过这样的方法参考。

© www.soinside.com 2019 - 2024. All rights reserved.