Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java泛型方法<;T扩展整数>+;1._Java_Generics - Fatal编程技术网

Java泛型方法<;T扩展整数>+;1.

Java泛型方法<;T扩展整数>+;1.,java,generics,Java,Generics,我是泛型新手。也许我的问题既愚蠢又愚蠢,但为什么下面的问题不起作用 public <T extends Integer> Integer methodA(T t){ return t = t + 1; } 公共整数方法a(T){ 返回t=t+1; } 它表示运算符不能应用于“T”、“int”。我应该怎么做才能使代码正常工作 你可以做: return t + 1; 但是一般来说,您的声明T extensed Integer没有什么意义,因为Integer被标记为final,

我是泛型新手。也许我的问题既愚蠢又愚蠢,但为什么下面的问题不起作用

public <T extends Integer> Integer methodA(T t){
   return t = t + 1;
}
公共整数方法a(T){
返回t=t+1;
}
它表示运算符不能应用于“T”、“int”。我应该怎么做才能使代码正常工作

你可以做:

return t + 1;
但是一般来说,您的声明
T extensed Integer
没有什么意义,因为
Integer
被标记为
final
,因此不能
扩展它。

这将起作用

public <T extends Integer> Integer methodA(T t){
    return t + 1;
}
公共整数方法a(T){
返回t+1;
}
原因
返回t=t+1
不起作用的原因是
t+1
返回只能自动装箱为
整数的
int
。就编译器所知,
T
可能是
Integer
的子类(即使没有这样的东西,因为
Integer
是最终类),因此它不允许将任何
Integer
赋值给
T
公共类SomeClass>类型的变量{
public class SomeClass {

  public <T extends Integer> Integer methodA(T t) {
    return t.intValue() + 1 ;
  }
}
公共整数方法A(T){ 返回t.intValue()+1; } }

这应该可以正常工作

这会添加不必要的装箱。@AntonKolosok如果出现错误,它如何工作?你的意思是你得到警告了吗?是的。糟糕的英语,sorry@AntonKolosok我试过了,但在Eclipse上没有收到警告。我想这取决于编译器的选项。我使用IDEA和默认选项。