【发布时间】:2013-06-10 23:59:19
【问题描述】:
这个问题涉及泛型和使用 Comparable 和 Comparator 接口。
我有一堂巧克力课:
public class Chocolate implements Comparable<Chocolate> {
public int compareTo(Chocolate c) {
if (this.getValue() > c.getValue()) {
return 1;
} else if (this.getValue() < c.getValue()) {
return -1;
} else {
return 0;
}
}
}
还有一个类Pair
public abstract class Pair<E extends Comparable<E>, T extends Comparable<T>>
implements Comparable<Pair<E, T>> {
public int compareTo(Pair<E, T> p) {
if (this.first.compareTo(p.first) > 0) {
return 1;
} else if (this.first.compareTo(p.first) < 0) {
return -1;
} else {
if (this.second.compareTo(p.second) > 0) {
return 1;
} else if (this.second.compareTo(p.second) < 0) {
return -1;
}
}
return 0;
}
}
另外一个类Sorter有一个main方法
public class SortingClient {
public static void main(String[] args){
Pair<Chocolate, Chocolate>[] pairs = (Pair<Chocolate, Chocolate>[]) new Pair<?,?>[numPairs];
Comparator<Pair<Chocolate, Chocolate>> interfaceChocolate = new Comparator<Pair<Chocolate, Chocolate>>(){
public int compare(Pair<Chocolate,Chocolate> c1, Pair<Chocolate,Chocolate> c2){
if (c1.compareTo(c2) > 0){
return 1;
}
else if (c1.compareTo(c2) < 0){
return -1;
}
else {
return 0;
}
}
} * Error here*
}
我在倒数第二行收到一个错误,标记为“语法错误,插入“;”以完成 LocalVariableDeclarationStatement” 这个错误是什么意思,我该如何解决?
【问题讨论】:
-
你只需要添加一个分号,你必须关闭你的 Comparator 实例化,即使是一个匿名类。就像 variable = new Class(){ //overriding here };
标签: java oop generics comparator comparable