У меня есть строка разделенных пробелами битов (1 и 0), которые я хочу преобразовать в массив перечислений. Ниже приведены мои усилия.
Это класс Enum
enum Color { RED, GREEN }
Вот код преобразования.
Color[] colors = (Color[]) Arrays.stream(sc.nextLine().split("\\s"))
.map(i -> {
if (i.equals("0")) return Color.RED;
else return Color.GREEN;
})
.toArray();
У меня возникают следующие проблемы с этим код:
Он использует приведение типов для перехода от массива Object
с к массиву Color
с, что может привести к ошибкам во время выполнения. Мне бы очень понравилось, если бы не было приведения типов.
Функция map. Я искал здесь в StackOverflow на mapToObj
, чтобы увидеть, есть ли способ указать тип возврата карты. Я думаю, что безопаснее, когда вы указываете, что карта должна возвращать объект Color
.