什么时候执行Java注释?
我只是想写一些注释,可以在运行时、调用服务方法之前或之后立即执行什么时候执行Java注释?,java,annotations,Java,Annotations,我只是想写一些注释,可以在运行时、调用服务方法之前或之后立即执行 我不知道它们是在运行时还是编译时执行。注释不执行;它们是由各种工具读取的注释或标记。有些是由编译器读取的,比如@Override;其他的则嵌入在类文件中,并在运行时由Hibernate等工具读取。但他们自己什么也不做 您可能会转而考虑,它可以用于验证前置条件和后置条件。注释对代码没有影响,它们提供的信息将由编译器或其他工具进行评估 注释有许多用途,其中包括: 编译器的信息-编译器可以使用注释来检测错误或抑制警告 编译器时间和部署时
我不知道它们是在运行时还是编译时执行。注释不执行;它们是由各种工具读取的注释或标记。有些是由编译器读取的,比如
@Override
;其他的则嵌入在类文件中,并在运行时由Hibernate等工具读取。但他们自己什么也不做
您可能会转而考虑,它可以用于验证前置条件和后置条件。注释对代码没有影响,它们提供的信息将由编译器或其他工具进行评估 注释有许多用途,其中包括: 编译器的信息-编译器可以使用注释来检测错误或抑制警告 编译器时间和部署时间处理-软件工具可以处理注释 用于生成代码、XML文件等的信息 运行时处理-一些注释可在运行时检查
请参见此图。实际上,它们可以在两种环境中读取,具体取决于您设置的保留策略 实际上,定义注释时,必须指定参数
@Retention
,该参数定义注释在源代码(源代码)、类文件(类)或运行时(运行时)中是否可用
注释只是标记。他们不执行和做任何事情 您可以指定不同的保留策略:
- SOURCE:注释仅保留在源文件中,并在编译过程中丢弃
- 类:编译期间存储在.CLASS文件中的注释,在运行时不可用
- 运行时:注释存储在.class文件中,在运行时可用
这取决于随该批注附加的保留策略 保留策略决定了批注应在哪一点进行 丢弃的。Java通过定义了3种类型的保留策略
java.lang.annotation.RetentionPolicy
枚举。它有源代码
、类
和运行时
- 保留策略为
源代码的批注将仅保留为 源代码,并在编译时丢弃
- 保留策略为
的批注将保留到CLASS
编译代码,并在运行时丢弃 - 具有保留策略
运行时
的批注将提供给 JVM通过运行时
@Retention
,我们必须通过保留策略
类型。默认的保留策略类型是
CLASS
,读者应该知道,在运行时可以(默认情况下)禁用断言。不要将应用程序关键行为放在断言中。
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}