假设我有这个枚举:
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。