Java:从枚举中获取字符串而不必调用.toString()?

Java:从枚举中获取字符串而不必调用.toString()?,java,enums,Java,Enums,假设我有这个枚举: public class MyErrors { public enum Errors { BAD_FILE_PATH("Please point to a valid file"); private final String message; Errors(final String message) { this.message = message; } @O

假设我有这个枚举:

public class MyErrors {
    public enum Errors {
        BAD_FILE_PATH("Please point to a valid file");

        private final String message;

        Errors(final String message) {
            this.message = message;
        }

        @Override
        public String toString() {
            return message;
        }
    }
这个电话:

Logging.log(Level.INFO, MyErrors.Errors.BAD_FILE_PATH.toString());
我觉得必须调用.toString()太冗长了。难道没有一种方法可以调用枚举本身并让它在默认情况下返回其字符串吗


理想情况下,我想要类似MyErrors.BAD_FILE_PATH-->的东西,它返回一个字符串,因此不会太冗长。这有什么意义吗?

这两种方法在Eclipse中都适用:

LOG.info(Errors.BAD_FILE_PATH); // Using Log4j System.out.println(Errors.BAD_FILE_PATH); LOG.info(Errors.BAD_文件路径);//使用Log4j System.out.println(Errors.BAD\u FILE\u PATH); 这两种方法采用对象参数。由于这些方法不接收字符串,因此这些方法中的逻辑必须调用传入对象上的toString()方法以获取字符串

java.util.logging.Logger的log()方法不支持对象参数。相反,它需要一个字符串参数;因此,此方法中的逻辑不需要调用toString()

您要查找的是支持对象参数的记录器的新签名。但是,我不知道扩展日志程序是一个直接的过程还是可取的;看


另一个选项是使用Log4j。

关于
“+MyErrors.Errors.BAD_FILE_PATH
”如何?当然可以。不要使用枚举。相反,提供一个静态的最终字符串。我第一次听说调用
toString
被认为是详细的。为什么要尝试使用枚举来处理显然不是详细的东西?@Dummy实际上调用toString是详细的,我不记得在过去几年中这样做过:如果你想打印一个对象,你可以简单地打印该对象(它将隐式调用其toString方法)。我使用import java.util.logging.Logger,并使用(Level-Level,String-message)的第一个签名。如果没有.toString…我会得到“无法解析方法'log'”,因此完整代码看起来像Logger.log(Level.INFO,ErrorMessages.Errors.STARTED.toString());