Java 泛型方法 <T extends Integer> +1

标签 java generics

我对泛型不熟悉。也许我的问题很愚蠢,但为什么以下不起作用?

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

它表示运算符不能应用于“T”、“int”。我应该怎么做才能使这段代码工作?

最佳答案

这会起作用

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

return t = t + 1; 不起作用的原因是 t+1 返回一个只能是 auto 的 int -装箱为整数。据编译器所知,T 可能是 Integer 的子类(尽管不存在这样的东西,因为 Integer 是Final 类),因此它不允许将任何 Integer 分配给 T 类型的变量。

关于Java 泛型方法 <T extends Integer> +1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47304129/

相关文章:

java - 使用JvmSynthetic setter进行模棱两可的方法调用

arrays - typescript :数组类型取决于先前的数组元素

java - 通用集合

java - 有没有办法使用 JVMTI 生成定期的 java 线程转储?

java - 我如何在 Java 中确定图像的色彩空间?

java - 我需要有人解释一下查询条件

generics - 既然 num::Zero 和 One 已被弃用,应该如何提供 1 或 0?

java - 如果只有一个writer线程并且没有对map进行结构修改,我们是否需要同步java HashMap gets

java - 静态类/接口(interface)的 Guice 泛型配置错误

swift - 是否可以将范围作为 Swift 字典中的键?