我是仿制药的新手。也许我的问题是愚蠢和愚蠢,但为什么以下不起作用?
public <T extends Integer> Integer methodA(T t){
return t = t + 1;
}
它表示运算符不能应用于'T','int'。我该怎么做才能使这段代码有效?
答案 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 ;
}
}
这应该可以正常工作