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

    }
    }

  • 相关阅读:
    测试种类
    Android ADB使用之详细篇
    Maven 生命周期
    在Eclipse中新建Maven项目
    Maven搭建环境(Linux& Windows)
    一个简单的JUnit项目
    Assertions
    Aggregating tests in suites
    Test execution order
    c#一个分页控件的例子
  • 原文地址:https://www.cnblogs.com/liuys635/p/10248006.html
Copyright © 2011-2022 走看看