More Stream didiomatic path with some generics sprinkled with a method signature:
public static <T extends Enum<T>> Optional<T> valueOf(Class<T> clazz, String name) { return EnumSet.allOf(clazz).stream().filter(v -> v.name().equals(name)) .findAny(); }
To check:
enum Test { A; } public static void main(String[] args) { Stream.of(null, "", "A", "Z").map(v -> valueOf(Test.class, v)) .forEach(v -> System.out.println(v.isPresent())); }
Expected Result:
false false true false
source share