为什么for-each中的Item项不能被解析为变量?

问题描述 投票:0回答:1

我正在使用tutorial来学习我的世界。在使用java.util.ArrayList ITEMS创建for-each循环之后,我必须创建一个if语句,if (item instanceof IHasModel)。 Eclipse声明if语句中的项引用不能解析为变量。

我使用的是Windows 10,JDK 8u192和Forge 14.23.5.2768。我尝试在for-each循环中更改net.minecraft.item.Item的名称,然后在if语句中使用更改的名称。

@SubscribeEvent
public static void onModelRegister(ModelRegistryEvent event)
{
    for(Item item : ModItems.ITEMS);
    {
        if (item instanceof IHasModel)
        {
            ((IHasModel)item).registerModels();
        }
    }
}

我期待没有错误,但Eclipse说item无法在循环中的任何地方被解析为变量。

java minecraft-forge
1个回答
0
投票

看看你的for循环。

for(Item item : ModItems.ITEMS);
{
    if (item instanceof IHasModel)
    {
        ((IHasModel)item).registerModels();
    }
}

在for-loop的第一行后面有一个分号(;)导致它是no operation(浪费cpu时间)

为了更好地理解,在这里澄清“长”是一回事:

for(Item item : ModItems.ITEMS)
{
    //nop;
}

// We are out of the for-loop scope. There is no "item" here...
{
    if (item instanceof IHasModel)
    {
        ((IHasModel)item).registerModels();
    }
}

要使代码正常工作: 从;删除for(Item item : ModItems.ITEMS);

© www.soinside.com 2019 - 2024. All rights reserved.