Java instanceof不匹配Double

Tek*_*llü 3 java casting

我有一个Value班级,其中有一个Object value.我想将值用作String,IntegerDouble.

asDouble方法控制instanceof值对象.如果不是DoubleInteger返回0.

一般来说它有效但有时虽然有效Double returns 0;.我不能理由.

当我调试时,我可以看到:

你可以查一下

这是我的Value类

public class Value{
    public Object value;

    public Value(Object value) {
        this.value = value;
    }

    public Double asDouble() {
        if (this.value instanceof Integer || this.value instanceof Double) {
            return Double.parseDouble(String.valueOf(this.value));
        } else {
            return 0.0; 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能解释我哪里出错了?

DwB*_*DwB 5

简答:详情很重要.

一些信息:value类实例变量(也称为属性或成员变量)是一个名为的类Value.由于该类Value既不是类Integer也不是Double类,否则else分支将始终执行.

Value班也有一个名为成员变量value,它在你的榜样,有一个类型的Double.

在您包含的屏幕截图中,Value对象将其value成员变量设置为"thing",其中也包含该类型Value.我知道这一点,因为对话框显示"value = Value(id:82)".