gpt4 book ai didi

java - 使用绑定(bind)泛型进行计算

转载 作者:行者123 更新时间:2023-11-30 03:06:42 24 4
gpt4 key购买 nike

我陷入了类型保存编程的困境。我尝试制定一种通用的乘法方法。但算术运算符不能应用于我的泛型类型。因此我将我的泛型扩展为整数。这是我的代码示例:

 public class Calculator<V extends Integer> {

public <V extends Integer> V multiply(V value1, V value2) {
return value1 * value2;
}
}

我已经尝试在文献“Java ist auch eine Insel”中发现我的错误,并且我已经搜索了网络。好吧,我相信你们中的一些人可以轻松解决这个问题,但我仍然感谢您的帮助。

最佳答案

首先,您定义了一个类型参数 <V extends Integer>在类级别上,这很好,除非您重新定义了方法范围的类型参数 <V extends Integer> 。方法范围的类型参数隐藏了类范围的类型参数,这是您在这里犯的错误之一。

此外,<V extends Integer>由于各种原因没有多大意义:

Integerfinal类,没有必要谈论“Integer可能子类型,称为 V ”,而且乘法运算符 ( * ) 仅适用于数字类型及其包装器(以及因为没有证据表明 V 是这样的,因此编译失败)。

刚刚:

public class Calculator {
public Integer multiply(Integer value1, Integer value2) {
return value1 * value2;
}
}

将正常编译,因为现在编译器将知道 value1value2可以从 Integer 自动拆箱至int并且可以正确应用乘法运算符。

总而言之,创建 Calculator 并不那么容易围绕某些泛型类型的类(主要是因为数字运算符(如 +-* 等)使用的类型范围严格)。

关于java - 使用绑定(bind)泛型进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com