Java注释何时执行?

Che*_*tan 9 java annotations

我只是想编写一些可以在运行时,在调用服务方法之前或之后立即执行的注释.

我不知道它们是在运行时还是在编译时执行.

Ern*_*ill 11

注释不会执行; 它们是各种工具读取的笔记或标记.有些是由编译器读取的,比如@Override; 其他的都嵌入在类文件中,并在运行时通过Hibernate等工具读取.但他们自己也没有做任何事情.

您可能正在考虑断言,可用于验证前置和后置条件.


los*_*gio 8

实际上,在定义注释时,必须指定参数@Retention,该参数定义注释在源代码(SOURCE),类文件(CLASS)或运行时(RUNTIME)中是否可用.

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}
Run Code Online (Sandbox Code Playgroud)


Sar*_*tha 7

注释只是标记.他们不执行任何事情.

您可以指定不同的保留策略:

  • SOURCE:注释仅保留在源文件中,在编译期间被丢弃.
  • CLASS:在编译期间存储在.class文件中的注释,在运行时不可用.
  • RUNTIME:存储在.class文件中的注释,在运行时可用.

更多信息:http://www.java2s.com/Tutorial/Java/0020__Language/SpecifyingaRetentionPolicy.htm