Java如何输出枚举常量名而非自定义toString返回的带括号内容
问题原因
你重写了Planet枚举类的toString()方法,直接打印枚举实例时会默认执行该重写逻辑,因此会输出带括号的距离信息,无法得到枚举常量本身的名称。
解决方法
Java所有枚举类都默认继承自java.lang.Enum,该类提供了不可被重写的name()方法,返回值就是枚举常量声明时的标识符(也就是你需要的MERCURY、EARTH这类名称),你只需要修改打印逻辑即可。
修改后的输出代码示例
// 原始写法(会触发自定义toString逻辑) // System.out.println(Dept.get()); // 修改后写法,直接获取枚举常量名称 System.out.println(Dept.get().name());
额外优化建议
直接调用Optional.get()在没有匹配到枚举值时会抛出NoSuchElementException,建议先判断是否存在匹配结果再输出,更安全的写法如下:
Arrays.stream(Planet.values()) .filter(e -> e.getCommonName().equals(Dep)) .findFirst() .ifPresent(planet -> System.out.println(planet.name()));
内容的提问来源于stack exchange,提问作者MOKRANI
相关产品推荐
相关产品推荐

