【问题标题】:Generics and Comparable and Comparator... Syntax error, insert ";" to complete LocalVariableDeclarationStatement"泛型和 Comparable 和 Comparator... 语法错误,插入“;”完成 LocalVariableDeclarationStatement"
【发布时间】: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


【解决方案1】:

你总是需要一个分号来结束一个变量声明,即使你正在创建一个匿名类的实例。

如果你有一个具体的类PairChocolateComparator,你仍然会使用分号:

Comparator<Pair<Chocolate, Chocolate>> interfaceChocolate =
    new PairChocolateComparator<Pair<Chocolate, Chocolate>>();

所以你仍然应该为匿名类实例添加分号:

Comparator<Pair<Chocolate, Chocolate>> interfaceChocolate =
    new Comparator<Pair<Chocolate, Chocolate>>(){
         // body omitted
};

【讨论】:

    【解决方案2】:

    只需按照消息提示添加分号即可。这就是赋值语句的完成(到interfaceChocolate)。

    【讨论】:

      【解决方案3】:

      没错,看看你的代码,你没有使用 Semi Colleen 来完成匿名课程,例如你的代码

      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*
      

      应该是这样的。

      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*
      

      看看;这将完成课程

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        有时会出现此错误(即使您的变量声明末尾有分号),因为您在此声明的正下方有一个特殊字符(例如 *),这会导致上一行出现类似这样的一般错误。至少要寻找的东西......好吧,a,为我向你的motha问好,嗯

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-28
          • 1970-01-01
          • 2012-10-21
          • 1970-01-01
          • 2011-01-17
          • 2011-10-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多