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和默认选项。