3 回答
TA贡献1828条经验 获得超4个赞
第一个失败,因为它是一项任务。sort 方法需要一个 Comparator 类的对象。因此,当您说 sort(new Comparator) 时,您正在创建一个新的 Comparator 并立即将其传递给 sort 方法。当你有 Comparator c = new Comparator () 然后你有 sort(c) 时,你创建一个新的 Comparator,将它存储在变量 c 中,并将它传递给 sort 方法。
第一段代码尝试为变量 c 分配一个新的 Comparator 并将其传递给方法 sort,java 的语法不允许这样做。这类似于拥有一个将一个整数作为参数并写入 foo(int bar = 7) 的方法。这不太合理。
TA贡献1873条经验 获得超9个赞
在第二个示例中,您没有将比较器提供给方法,而是将其分配给“c”引用。在第三个示例中,您将其分配给 c 引用,然后将其分配给 sort 方法。
希望这可以帮助 :)
TA贡献1865条经验 获得超7个赞
这里的问题不是您正在传递一个匿名类。
l.sort(Comparator<String> c= new Comparator<>() { ... });
这是试图声明一个变量,c. 变量声明是语句,因此不能在表达式中使用。(声明匿名类时也不能使用菱形运算符)。
如果你想声明一个变量来保存那个比较器,并在排序调用中分配它,你可以像这样:
Comparator<String> c;
l.sort(c = new Comparator<String>() { ... });
但我怀疑这不是你想要的。
添加回答
举报