注解在开发中有什么用呢?
需求:
· 假设有这样一个注解,叫做@id
这个注解只能出现在类上面,当这个类上有这个注解的时候,
要求这个类中必需有一个int类型的id属性,如果没有这个属性就报异常,如果有这个属性就正常运行。
下面是一个例子:
自定义注解类:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Id {
}
User用户类:
@Id
public class User {
int id;
}
自定义异常类:
public class HasNotIdPropertyException extends RuntimeException{
public HasNotIdPropertyException(){}
public HasNotIdPropertyException(String s){
super(s);
}
}
test测试类:
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) throws Exception{
//获取类
Class userClass = Class.forName("com.company.User");
//判断类上是否存在Id注解。
if (userClass.isAnnotationPresent(Id.class)){
Field[] f = userClass.getDeclaredFields();
boolean isOk = false;//给一个默认的标记,
for (Field field : f){
if ("id".equals(field.getName()) && "int".equals(field.getType().getSimpleName())){
isOk = true;
break;
}
}
//判断是否合法
if (!isOk){
throw new HasNotIdPropertyException("被@Id注解标注的类中必须要有一个int类型的id属性!!");
}
}
}
}