在Java 8中,我找到了一种从值中获取枚举的通用方法,它使用了Arrays.stream
和所有枚举值的过滤器,但是最近,我遇到了另一种方法,即Stream.of
,这之间有更好的方法彼此,为什么?还有另一种更好的方法吗?
例:
public enum Foo {
BAR_1("Bar 1"),
BAR_2("Bar 2");
private String friendlyValue;
Foo(String friendlyValue){
this.friendlyValue = friendlyValue;
}
public String getFriendlyValue() {
return friendlyValue;
}
public static Foo fromFriendlyValue1(String friendlyValue){
return Stream.of(Foo.values()).filter(r -> r.getFriendlyValue().equals(friendlyValue)).findFirst().get();
}
public static Foo fromFriendlyValue2(String friendlyValue) {
return Arrays.stream(Foo.values()).filter(r -> r.getFriendlyValue().equals(friendlyValue)).findFirst().get();
}
}
最佳答案
Stream.of实际上是在使用Arrays.stream。
public static<T> Stream<T> of(T... values) {
return Arrays.stream(values);
}
因此,您可以直接使用Arrays.stream。