gpt4 book ai didi

java - 我面临类转换异常,从 java.lang.Double 到 java.lang.Integer

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:57 25 4
gpt4 key购买 nike

我正在为一个具有 getValue() 的方法编写 JUnit 测试用例。返回一个对象的方法,getValue()返回我在 setValue() 中传递的值在这种情况下,当我将 double 值传递给 setValue() 时它给出了类转换异常。我不知道如何解决这个问题。

这是我正在测试的 if 条件,

Public class ImageToolsMemento 
{
public static final int FREEROTATION=3;
private double _freeRotation;
public void combine(ImageToolsMemento obj) //test method
{
if(((Integer)(obj.getValue(FREEROTATION))).intValue() != 0)//line 224
_freeRotation = ((Integer)(obj.getValue(FREEROTATION))).intValue();
}

public Object getValue(int type)
{
Object ret;
switch(type)
{
case FREEROTATION:

default:
ret = null;
}
return ret;
}

public void setValue(double value, int type)
{
switch(type)
{
case FREEROTATION:
_windowPanelMemento.setValue(value, type);
break;
default:
//"default case"
break;
}
}
}

测试用例

public class ImageToolsMementoTest 
{
@InjectMocks
ImageToolsMemento imageToolsMemento;

@Before
public void setUp() throws Exception
{
imageToolsMemento=new ImageToolsMemento();
}

@Test
public void testCombine()
{
imageToolsMemento.setValue(1.3, ImageToolsMemento.FREEROTATION);
imageToolsMemento.combine(imageToolsMemento);//calling test method, line 553
double _freeRotation=Whitebox.getInternalState(imageToolsMemento, "_freeRotation");
assertEquals(1.3,_freeRotation,0.0);
}
}

堆栈跟踪

java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
at com.toolboxmemento.ImageToolsMemento.combine(ImageToolsMemento.java:224)
at com.toolboxmemento.test1.ImageToolsMementoTest.testCombine(ImageToolsMementoTest.java:553)

谁能帮我解决这个问题P.S 我无法更改实现

最佳答案

在 java 中,您无法将 java.lang.Double 转换为 java.lang.Integer。您的错误上线:

if(((Integer)(obj.getValue(FREEROTATION))).intValue() != 0)//line 224

您可以使用 Double 类的 intValue 方法来代替强制转换:

if(((Double)obj.getValue(FREEROTATION)).intValue() != 0)//line 224

关于java - 我面临类转换异常,从 java.lang.Double 到 java.lang.Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43601713/

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