zoukankan      html  css  js  c++  java
  • 注解实现实例

     

    实现注解需要三个条件:注解声明、使用注解的元素、操作注解使其起作用(注解处理器)。
     
    定一个MyTag注解类:

    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());

    }
    }

  • 相关阅读:
    4.23上机练习
    4.17java作业
    4.16java作业
    leetcode 189
    leetcode 172
    leetcode 171
    leetcode 169
    win10内网外网智能访问
    leetcode 168
    leetcode 165
  • 原文地址:https://www.cnblogs.com/liuys635/p/10248006.html
Copyright © 2011-2022 走看看