作为Java的初学者,我在尝试将自定义比较器分配给集合时遇到以下编译错误:
mycode.pointComparator类型不是通用的;它不可能是 参数化参数
这是我的代码:
Set<Point3d> cornerPoints = new TreeSet<Point3d>(new pointComparator<Point3d>());
class pointComparator implements Comparator<Point3d> {
@Override
public int compare(Point3d o1, Point3d o2) {
if(!o1.equals(o2)){
return -1;
}
return 0;
}
}
我正在导入Java.util.
个套件
更新:
删除<Point3d>
参数会导致此错误:
无法访问mycode类型的封闭实例。必须符合资格 使用mycode类型的封闭实例进行分配 (例如x.new A(),其中x是mycode的一个实例)。
答案 0 :(得分:2)
这有效:
public static void main(String[] args) throws Exception {
// Look at the following line: diamond operator and new.
Set<Point> points = new TreeSet<>(new PointComparator());
}
static class PointComparator implements Comparator<Point> {
@Override
public int compare(Point p1, Point p2) {
if (!p1.equals(p2)) {
return -1;
}
return 0;
}
}