Почему элемент Item в for-each не может быть разрешен как переменная? - PullRequest
0 голосов
/ 07 февраля 2019

Я использую учебник для изучения Minecraft.После того, как я создал цикл for-each, используя java.util.ArrayList ITEMS, я должен сделать оператор if, if (item instanceof IHasModel).Eclipse заявляет, что ссылка на элемент в операторе if не может быть преобразована в переменную.

Я использую Windows 10, JDK 8u192 и Forge 14.23.5.2768.Я попытался изменить имя net.minecraft.item.Item в цикле for-each, а затем использовать измененное имя в операторе if.

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

Я не ожидал ошибок, но Eclipse говорит, что item не может быть разрешена как переменная, везде в цикле.

1 Ответ

0 голосов
/ 20 февраля 2019

Посмотрите на свой for -петл.

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

У вас есть точка с запятой (;) за первой строкой цикла for, что приводит к тому, что он является no operation(пустая трата процессорного времени)

Чтобы уточнить, это то же самое, что и в "long" для лучшего понимания:

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);

...