在编译的类文件中包含不推荐使用的消息

Mik*_*der 1 java deprecated

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

源Java文件

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

编译的类文件

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

/**
 * @deprecated
 */
@java.lang.Deprecated
public void someMethod(java.lang.String couponCode) { /* compiled code */ }
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 5

我觉得你运气不好.

Deprecated批注没有任何属性,所以没有地方存储任何消息中的注释.编译".java"文件时,将丢弃/不包含注释(例如javadoc).简而言之,无法从标准Ja​​va工具链创建的".class"文件中获取信息.

获取弃用注释的唯一方法是IDE是否可以访问编译".class"文件的".java"文件.

(评论javac -g:source有点困惑.-g:source开关导致额外信息被保留,但它仅限于源行号和路径名,参数名称和类似的东西.不是完整的源代码.这将是荒谬的...... )


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

但坦率地说,为什么不用javadocs分发您的代码或将它们放在您的网站上?当然程序员还是需要那些!任何有Java经验的人都知道你去javadocs找到@deprecation的解释.

(或者更好的是 - 分发您的源代码!这是减少程序员挫折/仇恨程度的好方法!)