变量意外地失去了它的价值

时间:2017-09-02 10:54:30

标签: java

在构造函数调用期间,在某些类中,我有一个非常奇怪的变量初始化问题。

此问题发生在that project中,例如在该行上。

我尝试调试它,即使在initEntity()方法结束时,变量pickupDelay也有它的值,但是如果我尝试在该方法之后打印它的值,它就会神奇地为null 。如果我在构造函数调用期间尝试扩展类Entity并初始化其字段,我会遇到类似的问题。并且代码中的任何地方都没有将变量设置为null。

这可能不会发生在静态变量上。

所以也许更好的问题是,可能导致已经初始化(最终或非最终)变量的因素被设置为null。

关于此问题的简短视频 https://youtu.be/otizERrYSVU

我的代码来测试问题:

CompoundTag itemTag = NBTIO.putItemHelper(Item.get(0));
        itemTag.setName("Item");

        CompoundTag nbt = new CompoundTag().putList(new ListTag<DoubleTag>("Pos").add(new DoubleTag("", 0))
                .add(new DoubleTag("", 0)).add(new DoubleTag("", 0)))
                .putList(new ListTag<DoubleTag>("Motion").add(new DoubleTag("", 0))
                        .add(new DoubleTag("", 0)).add(new DoubleTag("", 0)))
                .putList(new ListTag<FloatTag>("Rotation")
                        .add(new FloatTag("", new java.util.Random().nextFloat() * 360))
                        .add(new FloatTag("", 0)))
                .putShort("Health", 5).putCompound("Item", itemTag).putShort("PickupDelay", 40); //value 40

        EntityItem item = new EntityItem(this.defaultLevel.getChunk(0, 0, true), nbt); //new instance

item.pickupDelay意外更改为0

1 个答案:

答案 0 :(得分:0)

我解决了,

变量声明为

/node_modules
gen
/dist
/static/css

并且在父constrctor调用期间更改了值,因此在此之后它可能会被覆盖。