美文网首页
Java 利用注解反射对不同类型的数据转化

Java 利用注解反射对不同类型的数据转化

作者: 5e30a667061c | 来源:发表于2018-06-10 12:07 被阅读0次

不同的数据怎么才能转化相同的数据呢?比如我们需要的Node 数据,里面包括ID 和 Name ,但是外部能给的是FileBean 和JavaBean ,这种情况下,只能通过注解和反射来转化数据了。

先看看Node 类:

/**
 * 节点
 */
public class Node {

    private String id ;
    private String name;
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}

NodeId 注解:

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NodeId {
}

NodeName 注解:

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NodeName {
}

FileBean 类:

/**
 * 数据类型
 */
public class FileBean {

    @NodeId
    private String id ;
    @NodeName
    private String name ;

    public FileBean(String id , String name)
    {
        this.id = id;
        this.name = name;
    }
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

JavaBean 类:

/**
 * 数据类型
 */
public class JavaBean {

    @NodeId
    private String id ;
    @NodeName
    private String name ;

    public JavaBean(String id ,String name)
    {
        this.id = id;
        this.name = name;
    }
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

数据转化:


  private <T> List<Node>  convertData(List<T> datas) throws IllegalAccessException {
          List<Node> nodes = new ArrayList<>();
          Node node = null;
          for(T t :datas)
          {
              node = new Node();
              //获取Class 对象
              Class cl = t.getClass();
              // 获取Fileld
              Field[] fields = cl.getDeclaredFields();
              for(Field field :fields)
              {
                  if(field.getAnnotation(NodeId.class)!= null)
                  {
                      field.setAccessible(true);
                      node.setId((String)field.get(t));
                      nodes.add(node);
                      tv.append(node.getId()+"\n");
                  }
              }

          }
          return nodes ;
    }

这样就能轻松的转化数据了。

相关文章

  • Java 利用注解反射对不同类型的数据转化

    不同的数据怎么才能转化相同的数据呢?比如我们需要的Node 数据,里面包括ID 和 Name ,但是外部能给的是F...

  • 注解Annotation--java26(02/19/2016)

    主要内容 JDK内置的基本注解类型(3个)自定义注解类型对注解进行注解(4个)利用反射获取注解信息(在反射部分涉及...

  • 博客地址

    java注解-01、java注解-02、Git面试资源java反射-01、java反射-02、java反射-03为...

  • 【学习】Java语言

    Java基础 异常反射动态代理注解内部类泛型序列化拷贝基础数据类型JMXInstrument集合StreamION...

  • java 注解

    运行时的注解如何被处理的 [举例] java虚拟机运行api反射机制运行注解 注解语法 注解元素类型. 基本类型....

  • Java注解详解,自定义注解,利用反射解析注解

    概要 这篇文章将会带领你了解Java注解,注解的使用,注解的解析,利用反射解析运行时注解,相信有一定Java基础的...

  • 一个简单的自定义注解

    1、定义一个自定义注解 2、使用注解 3、利用反射获取注解的值 java注解是怎么实现的?

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Spring注解原理探索(三)

    之 Java如何识别注解 关键词:Java 反射java.lang.reflect 包,实现反射功能的工具类。注解...

  • Java基础知识(二)

    反射机制 Java中处理基本数据类型,如int、char等,其他均为引用类型。 每个引用类型也是Java中的一个对...

网友评论

      本文标题:Java 利用注解反射对不同类型的数据转化

      本文链接:https://www.haomeiwen.com/subject/wtjfeftx.html