Java:从枚举获取字符串,而无需调用.toString()



假设我有这个枚举:

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(;  使用 Log4j    System.out.println(Errors.BAD_FILE_PATH(;

这两种方法采用对象参数。 由于不接收字符串,因此这些方法中的逻辑必须在传入的对象上调用 toString(( 方法以获取字符串。

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

您要查找的是支持 Object 参数的记录器的新签名。 但是,我不知道扩展记录器是一个简单的过程还是可取的;看这里。

另一种选择是使用 Log4j。

最新更新