任何人都可以用简单的英语解释以下两段的含义吗? (摘自http://www.ibm.com/developerworks/java/library/j-cwt08025.html)
“注释更加灵活 你如何使用它们的术语 是否注释的选项 信息将被包括在课堂上 由编译器输出的文件 在运行时可用于应用程序 时间“
不确定这些意味着什么。 Can Annotations可以配置为可选地更改字节码吗?
虽然注释是理想的 与特定内容相关的元数据 组件,他们不太适合 具有跨组件的元数据 应用
恕我直言,大多数网络应用程序都是跨组件的。作者试图在这说什么?
答案 0 :(得分:3)
“注释在使用方式方面更加灵活,可以选择注释信息是否包含在编译器输出的类文件中,并在运行时提供给应用程序”
它比XDoclet更灵活,因为:
虽然注释非常适合与特定组件相关的元数据,但它们并不适合使用跨组件应用程序的元数据。
注释(如XDoclet)有一个有趣的功能,而不是外部Xml,例如:
注释存在于代码中,因此将它们应用于定义的代码是很自然的。您不必指定(使用一些复杂的语法)它们应用的代码段。例子:
如果要在外部Xml文件中使用相同的内容,则必须使用复杂的语法来标识所引用的代码段。这样就可以很容易地应用它们。
此外,在代码重构(如重命名)的情况下,注释继续正常工作,而外部xml必须更改为指向新的类或方法名称。 / p>
我不相信在Web应用程序中,大多数东西都是跨组件的。
答案 1 :(得分:3)
注释在术语上更灵活 如何使用它们,以及 是否注释信息 要包含在类文件输出中 由编译器提供给 运行时的应用程序
我认为这是指编译器可以删除Java5注释的事实,而有些可以保留在字节码中。这由注释类型上的@Retention
注释控制,例如
@Documented
@Retention(value=RUNTIME)
public @interface Deprecated
这表示@Deprecated
注释将出现在字节码中,并且对于反射也是可见的。 java.lang.annotation.RetentionPolicy
定义了不同的选项。