Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 注释说明_Java_Xml_Annotations_Metadata - Fatal编程技术网

Java 注释说明

Java 注释说明,java,xml,annotations,metadata,Java,Xml,Annotations,Metadata,有人能用简单的英语解释一下下面两段的意思吗?(摘自) “注释在应用程序中更灵活 您如何使用它们的术语,以及 是否删除注释的选项 信息要包括在课堂上 由编译器输出并生成的文件 应用程序在运行时可用 时间“ 不知道这些是什么意思。可以将注释配置为可选地更改字节码吗 而注释则非常适合于 与特定对象相关的元数据 组件,它们不太适合 跨组件元数据 应用程序 大多数web应用程序都是跨组件的。作者在这里想说什么 注释的使用方式更加灵活,可以选择是否将注释信息包含在编译器输出的类文件中,并在运行时提供给应用程

有人能用简单的英语解释一下下面两段的意思吗?(摘自)

“注释在应用程序中更灵活 您如何使用它们的术语,以及 是否删除注释的选项 信息要包括在课堂上 由编译器输出并生成的文件 应用程序在运行时可用 时间“

不知道这些是什么意思。可以将注释配置为可选地更改字节码吗

而注释则非常适合于 与特定对象相关的元数据 组件,它们不太适合 跨组件元数据 应用程序

大多数web应用程序都是跨组件的。作者在这里想说什么

注释的使用方式更加灵活,可以选择是否将注释信息包含在编译器输出的类文件中,并在运行时提供给应用程序

它比XDoclet更灵活,因为:

  • 它可以从源代码中使用(比如XDoclet)
  • 当您只有字节码而没有源代码时,可以在运行时使用它(与XDoclet不同)

虽然注释是与特定组件相关的元数据的理想选择,但它们并不适合跨组件应用程序的元数据

注释(如XDoclet)有一个有趣的特性,与外部Xml相反,例如:
注释存在于代码中,因此它们自然会应用于定义它们的代码中。您不必指定(使用一些复杂的语法)它们应用于哪段代码。示例:

  • 如果在方法上定义了注释,则该注释自然适用于该方法
  • 如果在某个字段上定义了注释,则该注释将自然应用于该字段
  • 如果在类上定义了注释,则该注释将自然应用于该类
  • 如果在包上定义了注释,则该注释将自然应用于该包
如果希望在外部Xml文件中包含相同的内容,则必须使用复杂的语法来标识引用的代码段。这使得它们很容易应用

此外,在代码重构(如重命名)的情况下,注释仍然可以正常工作,而外部xml必须更改为指向新的类或方法名称


我不相信在web应用程序中,大多数东西都是跨组件的

  • 如果定义了一个实体的持久性(到数据库),比如应该持久化这个类的表,它不是所有实体的全局性,它只影响当前实体
  • 其他许多例子也是如此
注释在术语上更灵活 您如何使用它们,以及 注释信息是否正确 要包含在类文件输出中 由编译器提供,并提供给 应用程序在运行时运行

我认为,这是指编译器可以删除Java5注释,而有些注释可以保留在字节码中。这由放置在批注类型上的
@Retention
批注控制,例如

@Documented
@Retention(value=RUNTIME)
public @interface Deprecated
这表示
@Deprecated
注释将出现在字节码中,并且反射也将可见
java.lang.annotation.RetentionPolicy
定义了不同的选项