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

    }
    }

  • 相关阅读:
    PHP实现用户注册并保存数据到文件
    浏览器与服务端请求响应流程与HTTP协议
    apache(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试 ...
    webpack4.0样式处理(1)
    webpack4.0:html插件
    webpack4.0:webpack基础配置
    webpack4.0---url-loader
    webpack4.0学习(1)
    深拷贝和浅拷贝
    'mongoimport'不是内部或外部命令,也不是可运行的程序
  • 原文地址:https://www.cnblogs.com/liuys635/p/10248006.html
Copyright © 2011-2022 走看看