标签:注解处理器 return 声明 field set tag setname res def
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD,ElementType.FIELD})
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTag {
String name() default "车";
int size() default 10;
}
定义一个实体Car类:
public class Car {
private String name;
private int size;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public Car(){
}
public Car(String name, int size){
this.size = size;
this.name = name;
}
@Override
public String toString() {
return "Car [name=" + name + ", size=" + size + "]";
}
}
定义一个使用注解的类AnnotationDemo类:
public class AnnotationDemo{
@MyTag(name = "audi", size = 10)
private Car car;
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "Annotation [car=" + car + "]";
}
}
定义一个操作注解即让注解起作用的类AnnotationProccessor类:
import java.lang.reflect.Field;
public class AnnotationProccessor {
public static void annoProcess(AnnotationDemo annotation){
for(Field field : annotation.getClass().getDeclaredFields()){
if(field.isAnnotationPresent(MyTag.class)){ //如果存在MyTag标签
MyTag myTag = field.getAnnotation(MyTag.class);
annotation.setCar(new Car(myTag.name(),myTag.size()));
}
}
}
public static void main(String[] args) {
AnnotationDemo ann = new AnnotationDemo();
annoProcess(ann);
System.out.println(ann.getCar());
}
}
标签:注解处理器 return 声明 field set tag setname res def
原文地址:https://www.cnblogs.com/liuys635/p/10248006.html