天天看点

java_反射_获取注解信息获取注解分析

获取注解分析

java_反射_获取注解信息获取注解分析
package com.test6;

import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Field;

//练习反射操作注解
public class test2 {
	public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException {
		Class c1 = Class.forName("com.test6.Student2");
		Annotation[] annotations = c1.getAnnotations();
		for(Annotation annotation:annotations) {
			System.out.println(annotation);
			//@com.test6.Tabletian("db_student")
		}
		//获得注解的value的值
		Tabletian tabletian = (Tabletian)c1.getAnnotation(Tabletian.class);
		String value=tabletian.value();
		System.out.println(value);//db_student
		
		//获得类指定的注解
		Field f=c1.getDeclaredField("id");
		Fieldtian annotation=f.getAnnotation(Fieldtian.class);
		System.out.println(annotation.columnName());//db_id
		System.out.println(annotation.type());//int
		System.out.println(annotation.length());//10
	}
}

@Tabletian("db_student")
class Student2 {
	@Fieldtian(columnName = "db_id", type = "int", length = 10)
	private int id;
	@Fieldtian(columnName = "db_age", type = "int", length = 10)
	private int age;
	@Fieldtian(columnName = "db_name", type = "varchar", length = 3)
	private String name;

	public Student2(int id, int age, String name) {
		this.id = id;
		this.age = age;
		this.name = name;
	}

	public Student2() {
	}

	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 getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Student2 [id=" + id + ", age=" + age + ", name=" + name + "]";
	}

}

//类名的注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface Tabletian {
	String value();
}

//属性的注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface Fieldtian {
	String columnName();

	String type();

	int length();
}