美文网首页
记一次平时工作遇到的小问题

记一次平时工作遇到的小问题

作者: 我我我不是明 | 来源:发表于2019-03-11 13:45 被阅读0次

工作上看到一个小伙伴遇到一个场景,假设我有一个接收参数的类,里面包含参数{bookName, money, wan}

参数类

需要达到的目的是把这一个对象里面的3个参数,分别变成3个book的集合 List<Book> resultList

目的List<Book> resultList里面 第一个BookA里面只含有bookName参数

                                                第二个BookB里面只含有money参数 

                                                第三个BookC里面只含有wan参数

需要写个通用方法:目前我仅仅只判断了类里面的属性是String还是Integer,因为我不想一个一个else if去判断属性类型,我也在想办法优化一下;代码的话在最下面.自己新建一个类,拷贝下面的全部代码放到类里面就能运行

public static void main(String[] args) throws Exception{

    Object o =222333;

    Book book =new Book();

    book.setBookName("xiaowan");

    book.setMoney(250);

    BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(book);

    PropertyValue propertyValue =new PropertyValue("wan", "aaaa");

    bw.setPropertyValue(propertyValue);

    List<Book> resultList =getEntity(book);

    resultList.stream().forEach(x-> System.out.println(x));

}

/**

* @descriptor 暂时还不是很完美,如果实体类里有其他类型需要过滤

* @author wbm

* @version 1.0

* @return

* @throws Exception

*/

public static <T> List<T> getEntity(T t) throws Exception{

    List<T> resultList =new ArrayList<>(10);

    Class<T> clazz =(Class<T>) t.getClass();

    PropertyDescriptor[] pds = BeanUtils.getPropertyDescriptors(t.getClass());

    for (PropertyDescriptor p : pds) {

        if (!p.getName().equals("class")) {

            Method readMethod = p.getReadMethod();

            String o = String.valueOf(readMethod.invoke(t, null));

            if (!StringUtils.isEmpty(o) && !o.equals("null")) {

                T result = clazz.newInstance();

                Field field = clazz.getDeclaredField(p.getName());

                ReflectionUtils.makeAccessible(field);

                Type fieldType = field.getGenericType();

                if (fieldType.toString().equals("class java.lang.String")) {

                    field.set(result, o);

                } else if (fieldType.toString().equals("class java.lang.Integer")) {

                    // 严谨一点可以判断转成int类型是否超过最大值Integer.MAX_VALUE

                    field.set(result, Integer.valueOf(o));

                } else {

                    System.out.println("出现错误啦");

                }

                resultList.add(result);

            }

}

}

    return resultList;

}

相关文章

  • 记一次平时工作遇到的小问题

    工作上看到一个小伙伴遇到一个场景,假设我有一个接收参数的类,里面包含参数{bookName, money, wan...

  • 平时遇到的小问题总结

    brew brew使用时提示error:not writable

  • 记一次遇到的小问题

    最近遇到一个很有意思的小问题,这个问题其实很简单,而且解决方法也很简单,就是感慨一下自己的脑子短路。 一般应...

  • 记VMware遇到的小问题

    今天在使用虚拟机时遇到点问题 组网模式是NAT模式 两台虚拟机都是静态ip192.168.128.0/24 网关i...

  • CocoaPods 踩坑小记

    记一些工作中遇到的小问题,给需要的人。 模块化项目应该都会遇到类似的问题,业务库经常变动必须在功能开发完成...

  • Word中表格的常用实用技巧

    Word是大家经常用到的职场常用软件,在使用过程中会遇到这样和那样的问题,现就平时工作遇到的一些小问题与大家分享。...

  • 零碎的json相关的事

    都是些平时遇到的小问题, 随手记下.首先import json 把dict格式化成json时遇到中文 把json转...

  • 关于工作小本本

    工作小本本,用来记录每天工作中遇到的各种小问题及解决方法。

  • 遇到的小问题

    起初做这个项目时,IDEA 无法下载jar包,这个maven本地仓库使用已经很久了,从没出现过这样的情况。我首先...

  • 遇到的小问题

    collectionView没有反弹效果,设置_collectionView.alwaysBounceVertic...

网友评论

      本文标题:记一次平时工作遇到的小问题

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