“使用Generic <t>类的二元运算符'+'”的坏操作数类型

时间:2018-03-21 15:45:15

标签: java comparable

我在Java中遇到泛型类的问题。 我写这个简单的代码试图理解,但我收到这个错误:

GenericoT.java:12: error: bad operand types for binary operator '+'
    return x + y + num;
             ^
  first type:  T
  second type: T
  where T is a type-variable:
    T extends Object declared in class GenericoT
GenericoT.java:25: error: bad operand types for binary operator '>'
    if(this.x > that.x)
              ^
  first type:  T
  second type: Object
  where T is a type-variable:
    T extends Object declared in class GenericoT
2 errors

我的代码:

public class GenericoT<T> implements Comparable<GenericoT> {

  private T x;
  private T y;

  public GenericoT(T x, T y){
    this.x = x;
    this.y = y;
  }

  public T sumNum(T num){
    return x + y + num;
  }


  public T getX(){
    return x;
  }

  public String toString(){
    return "[" + x + ", " + y + "]";
  }

  public int compareTo(GenericoT that){
    if(this.x > that.x)
      return 1;
    else return 0;
  }
}

为什么我不能将x + y +另外一个数加起来? 我在某处读到如果我要实现Comparable接口,我必须重写方法compareTo()。但这种方法也给我带来了错误。

2 个答案:

答案 0 :(得分:0)

我认为因为x和y的类型是T,它是一个对象,你不能用一个数字求和一个对象..如果我错了你可以纠正我;)

答案 1 :(得分:0)

Java无法超载+,您需要在scala中执行此操作。