@Generated注解,我们如何使用它?

29

最近我读到一篇关于Java注解的文章,其中提到了@Generated注解。据说它用于自动生成代码。

有人能用一个简单的例子进一步解释一下吗?

我在网上找到的都是一些专业问题,或者超出我需要的范围。


很难回答。您真正的问题是什么?如何使用@ Generated或如何在Java中使用注释? - Jerome Cance
第一个问题:如何在Java中使用@Generated? - Blood-HaZaRd
4个回答

20

根据JavaDoc

Generated注解用于标记已生成的源代码。它还可以用于区分单个文件中的用户编写代码和生成的代码。


这是否意味着,如果我们构建项目的类(例如),然后在一个类上注释@Generated,JVM将生成.class文件,但不包括带有该注释的文件,还是我完全超出了范围 :/ - Blood-HaZaRd
1
请访问此链接:http://www.javabeat.net/2007/06/introduction-to-java-6-0-new-features-part-i/ - Seshagiri
是的,我尝试将那个示例作为评论发布,但没有成功。我知道我要求太多了,但我真的没有看到那个示例会生成什么。 - Blood-HaZaRd
3
根据Javadoc的说明,我了解到@Generated注释只是一个标记,表示代码是自动生成的(例如JaxB将XSD转换为Java代码),而不是手写的。它有元素来标识生成代码的生成器和完成时间。我想这些可能很方便,因为生成器可以重新运行并注意到旧版本已创建该代码,并进行一些更新。 - David
@generated注解是一种书签,用于指示相应的代码是由工具自动生成的。因此,如果任何尊重它的IDE可能会阻止编辑该代码。 - Seshagiri
所以我不必担心被标记为@Generated的区域书签!!!谢谢Seshagiri的帮助。现在我觉得更清楚了。 也谢谢David。 - Blood-HaZaRd

3

@Generated是由元程序(如Auto/Value)使用的,它们会生成源代码,因此您不必手动编写代码。如果您正在手动编写.java文件(通常是这样做的),请不要使用@Generated


1
一些代码检查器使用注释来跳过生成的代码。例如,在生成的代码上计算圈复杂度是没有意义的。

0

举个例子,在生成的代码和手写代码之间,存在好的和坏的边界策略。我认为,在编译(静态)语言和解释/动态语言中,思考方式是不同的。

最糟糕的情况是修改生成的代码(下一次生成时将会丢失,或者下一代将被禁止)。通常接受从生成的类派生(手动)类,或者生成扩展核心“手动”类的类。

如果有人知道这个领域的良好策略,请评论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接