注解是一个接口,程序通过反射机制获得指定程序元素的Annotion对象。通过这个对象来获取注解里的元数据。
mysql中有元数据的概念,是对数据的数据的一种描述
例如mysql中的元数据可以获得数据库服务器当前的状态,服务器的版本号。
负责注解其他注解
栗子
@Retention(RetetionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface MyAnnotation{ public String name(); public String value(); }
解释;在interface前加@表明这是一个注解,该注解可以使用到其他地方
再定义两个指示,其中@Retetion 表明注解会保留到运行期间,在编译的时候,不会去掉
@Target表明只能用在类和接口上面
@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Column{ // 其中default代表是默认的,fieldName为默认的内容 public String name() default "fieldName"; public String setFuncName() default "getField"; public String getFuncName() default "getField"; public boolean defaultDBvalue() default false; }
@Documented在java生成文档的时候使用
@inherited
该注解某个被标注的类型是继承的,如果一个使用@inherited修饰的类型被用于一个class,则这个class是该class的子类。
@Inherited public @interface Greeting{ public enum FontColor{BULE, RED, GREEN}; String name(); }
@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface FruitName{ String value() default ""; }
@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface FruitColor{ public enum Color{BULE, RED, GREEN}; Color fruitColor() default Color.GREEN; }
public class Apple{ // 设置默认值为Apple @FruitName("Apple"); private String appleName; // 设置默认fruitColor的默认值为Color.RED @FruitColor(fruitColor = Color.RED) private String appleColor; }