前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java反射获取object类中的属性

java反射获取object类中的属性

作者头像
用户7886150
修改2021-02-02 11:41:09
2.4K0
修改2021-02-02 11:41:09
举报
文章被收录于专栏:bit哲学院

参考链接: java object类

参考资料:http://blog.csdn.net/nihaoqiulinhe/article/details/53838874 

以下开始是正文————–分割线—————- 

做项目的时候遇到一个问题,要求写一个通用的工具包,传入一个list,然后获取list里面的数据。问题来了,既然是通用的,就不能指定类,最多是list<object>这种。 

不会做的时候就度娘之 

public static void exportFile(HashMap map, List exportData, String fileds[]){

    for (int j = 0; exportData != null && !exportData.isEmpty()

                && j < exportData.size(); j++) {

            Class clazz = exportData.get(j).getClass();

            String[] contents = new String[fileds.length];

            //fileds是object的属性,调用本方法的时候传入

            for (int i = 0; fileds != null && i < fileds.length; i++) {

                String filedName = toUpperCaseFirstOne(fileds[i]);

                //将例如name的属性转化为getName这种方法

                Object obj = null;

                try {

                    Method method = clazz.getMethod(filedName);

                    method.setAccessible(true);

                    obj = method.invoke(exportData.get(j));

                } catch (Exception e) {

                }

                String str = String.valueOf(obj);

                //str即为name的值

                if (str == null || str.equals("null"))

                    str = "";

                contents[i] = str;

            }

        }

将第一个字母转换为大写字母并和get拼合成方法 

/**

     * 将第一个字母转换为大写字母并和get拼合成方法

     * 

     * @param origin

     * @return

     */

    private static String toUpperCaseFirstOne(String origin) {

        StringBuffer sb = new StringBuffer(origin);

        sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));

        sb.insert(0, "get");

        return sb.toString();

    }

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档