annotation

java 注解的作用:

它是一种标记,标记的目标有类、接口、方法、变量等,可以对使用此标记的对象进行一些操作,具体相关说明不做详解,个人感觉它离不开反射。

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Id {
}
public class TestClass {
	public TestClass() {
	}
	@Id
	private String testClassId;

	private String name;

	public String getTestClassId() {
		return testClassId;
	}

	public void setTestClassId(String testClassId) {
		this.testClassId = testClassId;
	}

	public String getName() {
		return name;
	}

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

}
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;

public class TestAnnotation {

	public static void main(String[] args) {
		try {
			Class clazz = TestClass.class;
			Object obj = clazz.getConstructor(new Class[] {}).newInstance(new Object[] {});
			for (Field field : clazz.getDeclaredFields()) {
				Id myId = field.getAnnotation(Id.class);
				if (myId != null) {
					System.out.println(field.getName() + "是ID字段");
				} else {
					System.out.println(field.getName() + "非ID字段");
				}
			}
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		}

	}

}


你可能感兴趣的:(annotation)