说我有这个枚举:
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 - >这样的东西。它返回一个字符串,所以它不是那么冗长。这有什么意义吗?
答案 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。