有一些简单的方法可以从列表中返回映射到我们通过的条件的对象。

例如:

public enum CarType {
    TOYOTA,
    NISSAN,
    UNKNOWN;

    public static CarType getByName(String name) {
        for (CarType carType : values()) {
            if (carType.name().equals(name)) {
                return carType;
            }
        }
        return UNKNOWN;
    }
}

Java 8下面的方法和我使用过的for循环是否还有其他支持方式。
public static CarType getByName(String name) {
    for (CarType carType : values()) {
        if (carType.name().equals(name)) {
            return carType;
        }
    }
    return UNKNOWN;
}

最佳答案

像这样的 findFirst orElse 为:

return Arrays.stream(values())
               .filter(carType -> carType.name().equals(name))
               .findFirst().orElse(CarType.UNKNOWN);

08-28 07:24