gpt4 book ai didi

java - 为什么在将通用方法参数转换为特定参数时无法转换为类型?

转载 作者:行者123 更新时间:2023-11-30 06:59:33 25 4
gpt4 key购买 nike

我写了一个科学计算器的java代码,也写了jUnit测试,下面是cubeRoot的计算方法。

public <T> Double cubeRoot(T number){
Double result= Math.cbrt((Double)number);
return Math.abs(result);
}

方法返回正确的结果整数和 double 类型,但是当我调用小数的方法时,我传递的参数是 double 类型。以下是上述方法的 JUint 测试。

public void testCalculateCubeRootWhenNegative(){
Integer number=-64;
assertEquals(-4.0,sci.cubeRoot(number));
}

public void testCalculateCubeRootOfdecimal(){
Double number=0.40;
assertEquals(0.736,sci.cubeRoot(number));
}

这是我正在使用的界面

public interface iScientific extends iMaths {
<T>Double squareRoot(T number);

<T>Double cubeRoot(T number);

无法找到解决错误“java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double”的解决方案

最佳答案

你正在尝试做这样的事情:

Integer i = Integer.valueOf(0);
Double d = (Double) i;

这不起作用,因为 i 不是 Double 的实例。

我建议更改您的 cubeRoot 方法以接受 Number (IntegerDouble 的基类):

public Double cubeRoot(Number number) {
Double result = Math.cbrt(number.doubleValue());
return Math.abs(result);
}

关于java - 为什么在将通用方法参数转换为特定参数时无法转换为类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31454761/

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