Annotations如何在Java或任何其他编程语言内部工作?

时间:2011-07-08 01:17:22

标签: java annotations

我很难理解注释的重要性和好处,所以有两个问题:

  1. 与XML配置相比,注释有什么好处?
  2. 注释如何在内部工作?
  3. 说明注释是否紧密绑定应用程序而XML配置应用程序是否松散耦合是否公平?
  4. 希望通过示例比较XML配置的利弊,这样我对它的理解会更有帮助。

    的问候。

3 个答案:

答案 0 :(得分:4)

关于第一个问题,

就个人而言,我觉得,有两个标准

  1. 注释可以简化元数据吗?
      

    如果注释没有减少您必须提供的元数据量(在大多数情况下它们都会减少),那么您就不应该使用注释。

  2. 可以更改应用程序中的元数据中断行为吗?

      

    如果没有,那么在系统正在生产中运行时,您可以放心地应用更改。在这种情况下,外部配置文件是元数据的最佳位置,因为您不希望重新编译代码以进行更改。

  3. 关于你的第二个问题,


    重要链接:

答案 1 :(得分:0)

回答第一个问题,IMO最大的好处是编译器集成的潜力。我可以编写一个注释处理器,它可以验证与注释应用相关的一些语义。如果相同的信息是XML文档的一部分,那么这种编译时检查是不可能的(或者至少会更加困难)。

回答第二个问题,注释本身并没有“内部”工作,因为它们没有任何固有的执行语义。它们是源级实体,可能会也可能不会保留在类文件中。可以在编译源代码时处理,如果它们保留在类文件中,可以通过反射访问。

答案 2 :(得分:0)

注释和XML描述符都用于在常规代码之上描述一些元数据。主要区别在于,在注释的情况下,您只需要处理一个包含代码和元数据的文件。它也是注释的一大优势,因为它减少了运动部件的数量并提高了生产率。

另一方面,注释的缺点是它们将代码和使用这些注释操作的系统或框架绑定在一起。这使得将来更难分开。

例如,如果使用Hibernate Annotations,则将模型对象与Hibernate绑定。如果您选择切换到不同的框架,则必须从代码中删除Hibernate注释。

但实际上,你不太可能经常改变框架。为什么在现有代码库上更改框架可能很难,通常有很多其他原因。因此,注释通常是一个不错的选择。

关于它们如何工作,注释是语言的一部分,由编译器和其他工具处理,并且根据保留,可以包含在生成的字节码中,以便在运行时使用。最终,由消费者决定如何使用注释。