Log4J 1.2 文档中的奇怪转换

Strange cast in Log4J 1.2 docs

我正在浏览 Log4J 文档,在 Logger#setLevel()(继承自 Category)方法的描述中偶然发现以下内容:

If you are passing any of Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR, Level.FATAL as a parameter, you need to case them as Level. As in

logger.setLevel((Level) Level.DEBUG);

这样的要求背后有什么原因吗?

我是不是漏掉了什么?

这似乎是在 1.2 版本中添加 Category.setPriority() was deprecated and Category.setLevel() 时引入的文档错误。

这是 setPriority 方法最初在 jakarta-log4j-1.1.3 中的样子:

/**
 Set the priority of this Category.
 <p>Null values are admitted.
*/
public void setPriority(Priority priority) {
    this.priority = priority;
}

查看 log4j-1.2.17setPriority 的源代码,我们可以看到当该方法被弃用时,添加了对 Level 的缩小转换:

/**
 Set the level of this Category.
 <p>Null values are admitted.
 @deprecated Please use {@link #setLevel} instead.
*/
public void setPriority(Priority priority) {
   this.level = (Level) priority;
}

因此,setPriority 的实现细节似乎以某种方式溜进了新 setLevel 方法的 JavaDocs 中。显然,文档没有意义,因为不需要强制转换。