使用反射获取课堂评论是否可能(有一种巧妙的方式)?我可以阅读.java文件并获得评论,但它可能没有,所以如果我寻找/ **的第一个实例然后* / i最终可能会有方法注释。
请你能避免代码解决方案,因为我想自己解决这个问题。
答案 0 :(得分:7)
评论未保留在类文件中,您必须返回原始来源才能获得评论。
如果在运行时需要您需要的信息,则应将其存储在注释中。这可以在运行时访问。
答案 1 :(得分:2)
这是不可能的。评论将从已编译的代码中删除。
答案 2 :(得分:2)
据我所知,没有办法通过反思来做到这一点。我怀疑评论/ JavaDoc在编译后被转移到实际的类文件中。一种方法是使用注释处理器。注释处理不使用反射,而是使用源模型/镜像的编译时等效。它允许您获取程序元素的文档,如类声明或方法。您可以在元数据文件中进行此操作,以便在运行时使用。
答案 3 :(得分:2)
我认为你不能通过反射来获得评论,因为编译器切断了注释,因此它们不在.class中。 例如,只有当你告诉它放置源时,Eclipse才会给你javadoc帮助。
答案 4 :(得分:2)
如果您真的想要这样做,您可以编写一个(外部)应用程序来解析您的源文件,并提取注释。然后,使用regex,您只能获取您感兴趣的评论(例如,关键字“class”上方的评论,或任何您想要的评论。
但如果你不介意我问,你为什么要这样做呢?如果您确实需要访问该信息,则意味着您需要将其推广到除评论之外的其他内容。就像应用程序中的某些String常量或类/方法上的注释一样,它可以由编译器保留,并且可以使用常规方法进行访问。
答案 5 :(得分:0)
除了其他人已经提到过的内容之外,从源.java文件中读取不是反射。 Reflection对已编译的代码,.class文件进行操作。