Java泛型方法<t extends =“”integer =“”> +1

时间:2017-11-15 09:49:47

标签: java generics

我是仿制药的新手。也许我的问题是愚蠢和愚蠢,但为什么以下不起作用?

public <T extends Integer> Integer methodA(T t){
   return t = t + 1;
}

它表示运算符不能应用于'T','int'。我该怎么做才能使这段代码有效?

3 个答案:

答案 0 :(得分:3)

这将有效

public <T extends Integer> Integer methodA(T t){
    return t + 1;
}

return t = t + 1;不起作用的原因是t+1返回的int只能自动装箱到Integer。就编译器所知,T可能是Integer的子类(即使没有这样的东西,因为Integer是最终类),所以它不是允许将任何Integer分配给T类型的变量。

答案 1 :(得分:2)

你可以这样做:

return t + 1;

但通常您的声明T extends Integer没有意义,因为Integer已标记为final,因此无法extend

答案 2 :(得分:-1)

public class SomeClass {

  public <T extends Integer> Integer methodA(T t) {
    return t.intValue() + 1 ;
  }
}

这应该可以正常工作