在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。

07-24 09:49