我从使用guava Optional和Enums(getIfPresent)的旧组中获得以下代码。
// getNameAsString returns the string literal but I want to safely convert
// to an enum and return an java.util.Optional <MessageName>.
// MessageName is an enum
Optional<MessageName> msgName = Enums.getIfPresent(MessageName.class, obj.getMessage().getNameAsString());
如何将其转换为Java 8? java 8中的guava Enums.getIfPresent等效于什么,它将返回java.util.Optional?
最佳答案
您可以使用Java 8进行伪造,如下所示
import java.util.Optional;
Optional<MessageName> msgName = getValueOf(MessageName.class,obj.getMessage().getNameAsString());
public static Optional<MessageName> getValueOf(Class<MessageName> enumType, String name){
MessageName enumValue = null;
try{enumValue =Enum.valueOf(enumType, name);
}catch(IllegalArgumentException ex ){
//log this here
}
return Optional.ofNullable(enumValue);
}
静态方法
getValueOf
处理IllegalArgumentException