注解
@Target(ElementType.METHOD) 元注解;描述注解的作用范围
@Retention(RetentionPolicy.RUNTIME) 元注解;用于描述注解的生命周期
@interface 定义一个自定义注解
package com.fh.gaoji.anotation; import java.lang.annotation.*; import java.lang.reflect.Field; public class ClassAndTableYingSheTest { public static void main(String[] args) throws NoSuchFieldException { Class<Stu> stuClass = Stu.class; //获取类上的所有注解 Annotation[] annotations = stuClass.getAnnotations(); for (Annotation annotation : annotations) { System.out.println(annotation); } //获取ClassAndTable注解 ClassAndTable classAndTable = stuClass.getAnnotation(ClassAndTable.class); System.out.println(classAndTable.value()); //获取FildAndColum注解 Field field = stuClass.getDeclaredField("name"); FildAndColum annotation = field.getAnnotation(FildAndColum.class); System.out.println(annotation.name()); System.out.println(annotation.type()); System.out.println(annotation.length()); } } @ClassAndTable("db_student") class Stu{ @FildAndColum(name = "db_name",type = "int",length = 10) private int id; @FildAndColum(name = "db_name",type = "varchar",length = 100) private String name; public int getId() { return id; } public Stu setId(int id) { this.id = id; return this; } public String getName() { return name; } public Stu setName(String name) { this.name = name; return this; } @Override public String toString() { return "Stu{" + "id=" + id + ", name='" + name + '\'' + '}'; } } /** * 类和表的映射 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @interface ClassAndTable{ String value(); } /** * 属性和列的映射 */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @interface FildAndColum{ String name() ; String type(); int length(); }