【发布时间】:2023-12-30 14:27:01
【问题描述】:
class pair{
int start;
int end;
pair(int start, int end)
{
this.start = start;
this.end = end;
}
}
public class Solution {
public void intervals(ArrayList<Integer> arrive, ArrayList<Integer> depart) {
ArrayList<pair> list = new ArrayList<>();
for(int i=0;i<arrive.size();i++)
{
pair p = new pair(arrive.get(i),depart.get(i));
list.add(p);
}
Collections.sort(list, new Comparator()
{
@Override
public int compare(pair a, pair b)
{
return a.start.compareTo(b.start);
}
});
错误表明此处不允许使用 a.start。但 compareTo 应该适用于整数值。
./Solution.java:19: error: <anonymous Solution$1> is not abstract and does not override abstract method compare(Object,Object) in Comparator
{
^
./Solution.java:20: error: method does not override or implement a method from a supertype
@Override
^
./Solution.java:23: error: int cannot be dereferenced
return (a.start).compareTo(b.start);
^
Note: ./Solution.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors
覆盖对我来说是正确的。我不知道它为什么会出错。
【问题讨论】:
-
应该是
new Comparator<pair>()。如果start是一个int,你不能在它上面调用方法,因为它不是一个对象。 -
无关:请遵循 java 命名约定。类名总是大写。所以,应该是
Comparator<Pair>;-)
标签: java overriding comparator unsafe compareto