gpt4 book ai didi

java - 通用类型转换错误

转载 作者:行者123 更新时间:2023-11-30 07:39:15 27 4
gpt4 key购买 nike

我正在尝试创建一个接受多个任何基本类型(字节、整数、浮点、长整型、 double 或短整型)的方法。然后,在某种检查方法之后,要么返回完全相同的数字(即,例如,它接受 double 并返回 double),要么返回零。

到目前为止我已经做到了:

<AnyNumType> AnyNumType cancelAdd(AnyNumType val, String point) {
if (checkModuleMatchAndOff(point) == true) return 0;
else return val;
}

但是我收到类型不匹配错误(0 下划线并解释:“无法从 int 转换为 AnyNumType”)。有没有办法解决这个零问题呢?我打算在方程式中使用此方法,因此我确实需要它来返回原始类型。

编辑:非常感谢你们的所有回复,伙计们!

最佳答案

不,您不接受任何原始类型;你接受任何对象类型。您可能认为您接受原始类型,但 Java 泛型只能使用引用类型。当传递到此方法时,您的值将被装箱。您可以将 String 作为 val 传递。

这应该表明为什么0无法转换为AnyNumType——AnyNumType可以是任何引用类型。

接受任何基本类型的最佳方法是为每个基本类型提供重载,例如 many methods in the core library do 。您可以在每个重载中返回相当于 0 的内容,例如

byte cancelAdd(byte val, String point)
{
if (checkModuleMatchAndOff(point) == true) return (byte) 0;
else return val;
}

其他基元类型的重载看起来非常相似。

关于java - 通用类型转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34930143/

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