我希望能够向我的方法添加弃用消息,以便在打开.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 */ }
答案 0 :(得分:5)
我觉得你运气不好。
Deprecated
注释没有任何属性,因此无法在注释中存储任何消息。当编译“.java”文件时,将丢弃/不包括注释(例如javadoc)。简而言之,无法从标准Java工具链创建的“.class”文件中获取信息。
获取弃用注释的唯一方法是IDE是否可以访问编译“.class”文件的“.java”文件。
(关于javac -g:source
的评论有点混乱。-g:source
开关导致保留额外信息,但它仅限于源行号和路径名,参数名称和类似的东西。不是完整的源代码。这太荒谬了......)
我想如果您想要有创造力,可以使用消息参数创建自己的自定义“弃用原因”注释。也许用户的IDE会显示它,但这将是IDE特定的。无论如何,值得尝试。
但坦率地说,为什么不用javadocs分发您的代码或将它们放在您的网站上?当然程序员还是需要那些!任何有Java经验的人都知道你去了javadocs找到@deprecation的解释。
(或者更好 - 分发您的源代码!这是减少程序员挫折/仇恨程度的好方法!)