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

时间:2017-11-16 20:57:12

标签: 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;
        }

        @Override
        public String toString() {
            return message;
        }
    }

这个电话:

Logging.log(Level.INFO, MyErrors.Errors.BAD_FILE_PATH.toString());

我必须调用.toString()似乎很啰嗦。有没有办法只调用枚举本身并让它默认返回它的字符串?

理想情况下,我喜欢像MyErrors.BAD_FILE_PATH - >这样的东西。它返回一个字符串,所以它不是那么冗长。这有什么意义吗?

1 个答案:

答案 0 :(得分:1)

这两个在Eclipse中对我有用:


    LOG.info(Errors.BAD_FILE_PATH);   // Using Log4j
    System.out.println(Errors.BAD_FILE_PATH);

这两个方法采用Object参数。由于没有接收字符串,这些方法中的逻辑必须调用传入的对象上的toString()方法来获取字符串。

java.util.logging.Logger的log()方法不支持Object参数。相反,它期待一个String参数;因此,此方法中的逻辑无需调用toString()。

您正在寻找的是Logger的新签名,它支持Object参数。但是,我不知道延长记录器是一个直接的过程或是可取的;见here

另一种选择是使用Log4j。