有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:从enum获取字符串而不必调用。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这样的东西。错误的文件路径-->;它返回一个字符串,因此不会太冗长。这有什么意义吗


共 (1) 个答案

  1. # 1 楼答案

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

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

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

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

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

    另一种选择是使用Log4j