一个简单的JAVA注解类
测试一下:
输出:
package com.xk.annotation;
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 {
}
使用这个JAVA注解类
package com.xk.annotation;
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;
}
}
测试一下:
package com.xk.annotation;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
public class main {
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();
}
}
}
输出:
testClassId是ID字段
name非ID字段