Я работаю с библиотекой с методом, у которого есть HashSet с параметром перечисления, и я не могу вызвать этот метод. Я думаю, что этот вопрос, вероятно, самый простой, но у меня эта проблема с двух дней. Следуйте методу в библиотеке:

public int searchCard(HashSet<CardSlotTypeEnum> var1, int var2, OnCardInfoListener var3) {
    if(var2 >= 0 && var3 != null) {
        u.a().a(var1, var2, var3);
        return 0;
    } else {
        return -2;
    }
}

Следуйте перечислению CardSlotType Enum:

public enum CardSlotTypeEnum {
    ICC1,
    ICC2,
    ICC3,
    PSAM1,
    PSAM2,
    PSAM3,
    RF,
    SWIPE,
}

Следуйте моему коду:

reader = deviceEngine.getCardReader();
OnCardInfoListener info = new OnCardInfoListener() {};
HashSet<CardSlotTypeEnum> teste = new HashSet<CardSlotTypeEnum>();

reader.searchCard(teste,60,info);

У меня проблемы с инициализацией переменной 'teste', это единственный способ, который не выдает мне сообщение об ошибке, но в этом случае 'teste' ничего не получает.

Если бы кто-то мог мне помочь, был бы признателен.

-1
FFigueredo 4 Янв 2018 в 22:43

1 ответ

Лучший ответ

Немного странно, что эта библиотека использует HashSet вместо EnumSet, но если это то, с чем вы застряли, то пусть будет так.

Очень легко создать EnumSet, в котором есть все значения из вашего класса enum. Затем вы можете довольно легко создать HashSet из этого:

EnumSet<CardSlotTypeEnum> enums = EnumSet.allOf(CardSlotTypeEnum.class);
HashSet<CardSlotTypeEnum> teste = new HashSet<>(enums);

Редактировать

Если вы хотите добавить в набор только определенные константы перечисления, вы можете просто сделать это вручную:

HashSet<CardSlotTypeEnum> teste = new HashSet<>();
teste.add(CardSlotTypeEnum.RF);
teste.add(CardSlotTypeEnum.SWIPE);
2
Ben P. 4 Янв 2018 в 20:45