无法从T转换为Integer

时间:2013-12-16 15:53:16

标签: java generics

我已经尝试过使用Java泛型的一些东西,但这个问题似乎无法解决!

由于抽象超类,我必须实现一个方法,如果它们是Integer,则添加两个Type T值,并返回类型为T的结果。

public T evaluate(T left, T right) {
    if(left instanceof Integer && right instanceof Integer){
        return (((Integer)left) + ((Integer)right));
    }else{
        return null;
    }
}

这就是我到目前为止所做的一切,因为Eclipse总是告诉我,Java无法从Integer转换为T.

如何强制Java转换为T? 或者有可能写两种方法吗?一个用于T扩展整数而一个用于不用?

2 个答案:

答案 0 :(得分:1)

在这种情况下似乎不需要泛型,因为方法evaluate()仅处理一种特定类型(Integer)并返回该特定类型(同样,Integer

答案 1 :(得分:0)

您的方法返回T,因此您需要将结果转换为T。例如:

  public T evaluate(T left, T right) {
    if (left instanceof Integer && right instanceof Integer) {
      Integer result = ((Integer) left) + ((Integer) right);
      return (T) result;
    } else {
      return null;
    }
  }