注解
//类名的注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface TableName{
String value();
}
//属性的注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface TableColumn{
String columnName();
String type();
int length();
}
实体类
@TableName("db_player")
class Player {
@TableColumn(columnName = "db_id", type = "int", length = 10)
int id;
@TableColumn(columnName = "db_age", type = "int", length = 10)
int age;
@TableColumn(columnName = "db_username", type = "varchar", length = 10)
String username;
@TableColumn(columnName = "db_password", type = "varchar", length = 10)
String password;
public Player() {
}
public Player(int id, int age, String username, String password) {
this.id = id;
this.age = age;
this.username = username;
this.password = password;
}
public void test(int age, String name){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
反射获取注解
import java.lang.annotation.*;
import java.lang.reflect.Field;
//通过反射获取注解
public class Test_08 {
public static void main(String[] args) throws NoSuchFieldException {
Class aclass = Player.class;
//通过反射获得类注解
Annotation[] annotations = aclass.getAnnotations();
for (Annotation annotation : annotations) System.out.println("类注解信息: " + annotation);
System.out.println("==========");
//获得类注解的参数值
TableName tableName = (TableName)aclass.getAnnotation(TableName.class);
System.out.println("类注解参数的值: " + tableName.value());
System.out.println("==========");
//获得属性注解的参数值
Field field = aclass.getDeclaredField("id");
TableColumn tableColumn = field.getAnnotation(TableColumn.class);
System.out.println("id属性注解的参数值: " + tableColumn.columnName());
System.out.println("id属性注解的参数类型: " + tableColumn.type());
System.out.println("id属性注解的参数允许长度: " + tableColumn.length());
}
}
运行效果