2

我希望能够在我的方法中添加一条弃用消息,以便在.class打开文件时显示弃用消息。理想情况下,此消息将用于将已编译类的用户引导至替换已弃用版本的方法。

源 Java 文件

/**
 * @deprecated This is the message I want displayed in the complied code
 */
@Deprecated
public void someMethod(java.lang.String couponCode) { 
    this.x++; 
}

编译的类文件

下面的代码是我使用Intellij 12.class打开文件时当前显示的代码

/**
 * @deprecated
 */
@java.lang.Deprecated
public void someMethod(java.lang.String couponCode) { /* compiled code */ }
4

1 回答 1

8

我觉得你运气不好。

Deprecated注释没有任何属性,因此注释中无处存储任何消息。当编译“.java”文件时,注释(例如 javadocs)会被丢弃/不包括在内。简而言之,没有办法从标准 Java 工具链创建的“.class”文件中获取信息。

获得弃用注释的唯一方法是 IDE 是否有权访问从中编译“.class”文件的“.java”文件。

(关于的评论javac -g:source有点混乱。-g:source开关会导致保留额外的信息,但仅限于源代码行号和路径名,参数名称和类似的东西。不是完整的源代码。那太荒谬了...... )


我想如果你想有创造力,你可以使用消息参数创建自己的自定义“弃用原因”注释。也许用户的 IDE 会显示它,但这将是特定于 IDE 的。无论如何,值得一试。

但坦率地说,您为什么不直接使用 javadocs 分发您的代码或将它们放在您的网站上呢?当然,程序员无论如何都需要这些!任何有 Java 经验的人都知道,您会去 javadocs 查找 @deprecation 的解释。

(或者更好的是——分发你的源代码!这是减少程序员沮丧/仇恨水平的好方法!)

于 2013-04-25T23:06:30.873 回答