Мне нужно создать EnumSet из набора. Я решил использовать метод EnumSet#copyOf. Однако из-за ограничений по этому методу:Java: EnumSet.copyOf - есть ли место для улучшения?
the specified collection must contain at least one element (in order to determine the new enum set's element type)
Мне нужно убедиться, что коллекция не пуста. Код становится:
enum Color {RED, GREEN, BLUE}; Set<Color> set = ... // get it from somewhere if (set.isEmpty()) { return EnumSet.noneOf(Color.class); else return EnumSet.copyOf(set);
Возможно, есть реальное ограничение на JAVAC, чтобы определить правильный тип элементов коллекции передается copyOf
метод, но я не могу отделаться от ощущения, что я должен прибегать к чему-то подобному выше, чтобы удовлетворить пустую коллекцию. Вот мои вопросы:
В чем именно ограничение, которое пустая коллекция не может быть принята здесь?
Был ли метод подписи, такой как
copyOf(Collection<Enum<E>>)
, решить эту проблему?Если да, то какие другие проблемы он создал?