精华内容
下载资源
问答
  • java遍历一个对象的所有属性

    万次阅读 2018-11-06 17:14:25
    java遍历一个对象的所有属性

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    本文转载自(http://www.cnblogs.com/137913828S2/archive/2012/07/10/2584774.html)

    java中遍历实体类属性和类型,属性值

    public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
            Field[] field = model.getClass().getDeclaredFields();        //获取实体类的所有属性,返回Field数组  
            for(int j=0 ; j<field.length ; j++){     //遍历所有属性
                    String name = field[j].getName();    //获取属性的名字
                    
                    System.out.println("attribute name:"+name);     
                    name = name.substring(0,1).toUpperCase()+name.substring(1); //将属性的首字符大写,方便构造get,set方法
                    String type = field[j].getGenericType().toString();    //获取属性的类型
                    if(type.equals("class java.lang.String")){   //如果type是类类型,则前面包含"class ",后面跟类名
                        Method m = model.getClass().getMethod("get"+name);
                        String value = (String) m.invoke(model);    //调用getter方法获取属性值
                        if(value != null){

                            System.out.println("attribute value:"+value);
                        }
                    }
                    if(type.equals("class java.lang.Integer")){     
                        Method m = model.getClass().getMethod("get"+name);
                        Integer value = (Integer) m.invoke(model);
                        if(value != null){
                            System.out.println("attribute value:"+value);
                        }
                    }
                    if(type.equals("class java.lang.Short")){     
                        Method m = model.getClass().getMethod("get"+name);
                        Short value = (Short) m.invoke(model);
                        if(value != null){
                            System.out.println("attribute value:"+value);                    }
                    }       
                    if(type.equals("class java.lang.Double")){     
                        Method m = model.getClass().getMethod("get"+name);
                        Double value = (Double) m.invoke(model);
                        if(value != null){                    
                            System.out.println("attribute value:"+value);  
                        }
                    }                  
                    if(type.equals("class java.lang.Boolean")){
                        Method m = model.getClass().getMethod("get"+name);    
                        Boolean value = (Boolean) m.invoke(model);
                        if(value != null){                      
                            System.out.println("attribute value:"+value);
                        }
                    }
                    if(type.equals("class java.util.Date")){
                        Method m = model.getClass().getMethod("get"+name);                    
                        Date value = (Date) m.invoke(model);
                        if(value != null){
                            System.out.println("attribute value:"+value.toLocaleString());
                        }
                    }                
                }
        }

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • //将origin属性注入到destination中 public &lt;T&gt; void mergeObject(T origin, T destination) { if (origin == null || destination == null) return; if (!origin.getClass().equals...

    //将origin属性注入到destination中 public <T> void mergeObject(T origin, T destination) { if (origin == null || destination == null) return; if (!origin.getClass().equals(destination.getClass())) return; Field[] fields = origin.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { try { fields[i].setAccessible(true); Object value = fields[i].get(origin); if (null != value) { fields[i].set(destination, value); } fields[i].setAccessible(false); } catch (Exception e) { } } }

      以上是赋值给同类对象,下面是赋值给非同类的对象的同名属性例子

    package test.test;
    
    import java.lang.reflect.Field;
    
    class Temp{
        String a = null;
        String b = null;
        String c = null;
    }
    
    class Temp2{
        String a = null;
    }
    
    public class Test3 {
    
        public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
            // TODO Auto-generated method stub
            Temp t1 = new Temp();
            t1.a ="value a";
            Temp t2 = new Temp();
            t2.b = "value b";
            Temp2 t3 = new Temp2();
            
            Field[] fields = t1.getClass().getDeclaredFields();
            
            
            Field[] fields2 = t3.getClass().getDeclaredFields();
            for(int i=0;i<fields.length;i++)
                if(fields[i].getName().equals(fields2[0].getName())){
                    fields2[0].set(t3, fields[i].get(t1));
                }
            System.out.println(t3.a);
    
        }
    
    }

     

    展开全文
  • 本文是Java反射的一个常见的案例,常见的情况是,给到一个对象,需要把对象的每个属性和值重新生成一个Map或者Array,这个时候就是要要到反射啦,不多说,上干货: public static ArrayList&lt;NameValuePair&...

    本文是Java反射的一个常见的案例,常见的情况是,给到一个对象,需要把对象的每个属性和值重新生成一个Map或者Array,这个时候就是要要到反射啦,不多说,上干货:

    public static ArrayList<NameValuePair> getObjNameAndValueList(Object obj) {
        try {
            if (obj == null) {
                return null;
            }
            Field[] fields = obj.getClass().getDeclaredFields();
            if (fields== null || fields.length ==0) {
                return null;
            }
            ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
            for (Field f:fields) {
                if (f.getName() != null && getFieldValueByName(f.getName(),obj)!=null) {
                    nameValuePairs.add(new BasicNameValuePair(f.getName(),String.valueOf(getFieldValueByName(f.getName(),obj))));
                }
            }
            return nameValuePairs;
        }catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    通过obj.getClass()方法获得Class,获取其所有的声明的属性,每个属性可以通过Filed的getName方式获取,这个是最常见的使用方式,这样我们可以得到该类的每个属性值。

     

    private static Object getFieldValueByName(String filedName, Object o) {
        try {
           String firstLetter = filedName.substring(0,1).toUpperCase();
           String getter = "get"+firstLetter+filedName.substring(1);
            Method method =o.getClass().getMethod(getter,new Class[]{});
            Object value = method.invoke(o,new Object[]{});
            return value;
        }catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    上面的方法,根据属性名,拼接对应的get方法,属性的第一个字母大写,拼成getXxx()方法,通过Class的getMethod()获取Method对象,然后通过Method反射获取该对象中此字段的值。这个是最常用的使用方法,希望能帮助到大家,如果有不足之处请留言指出哈,技术是需要多交流,欢迎志同道合的伙伴一起学习和进步。

     

     

    展开全文
  • Java遍历对象所有属性

    万次阅读 2018-04-18 19:30:52
    要获取对象的所有属性可以使用getDeclaredFields()方法会返回一个Field数组遍历这个数组几个遍历所有属性注意使用这个方法会抛出4个异常然后根据属性的类型选择执行对应的内容public static void eachProperties...

    要获取对象的所有属性可以使用getDeclaredFields()
    方法会返回一个Field数组
    遍历这个数组几个遍历所有属性
    注意使用这个方法会抛出4个异常
    然后根据属性的类型选择执行对应的内容

    public static void eachProperties(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
        Field[] field = model.getClass().getDeclaredFields(); //获取实体类的所有属性,返回Field数组
        for(int j=0 ; j<field.length ; j++){ //遍历所有属性
            String name = field[j].getName(); //获取属性的名字
    
            System.out.println("attribute name:"+name);
            name = name.substring(0,1).toUpperCase()+name.substring(1); //将属性的首字符大写,方便构造get,set方法
            String type = field[j].getGenericType().toString(); //获取属性的类型
            if(type.equals("class java.lang.String")){ //如果type是类类型,则前面包含"class ",后面跟类名
              ...
            }
            if(type.equals("class java.lang.Integer")){
              ...
            }
            if(type.equals("class java.lang.Short")){
              ...
            }
            if(type.equals("class java.lang.Double")){
              ...
            }
            if(type.equals("class java.lang.Boolean")){
              ...
            }
            if(type.equals("class java.util.Date")){
              ...
            }
        }
    }
    

    具体执行的内容就是重点了
    我们知道模型的属性都会有对应的getter和setter方法
    只需要得到对应的getter和setter方法即可获取和设置属性
    这里就需要用到getMethod方法

    获得getter方法

    方法有分带参数和不带参数,我们知道getter方法是不带参数的
    获得getter方法如下

    Method m = model.getClass().getMethod("get"+name);
    

    获得setter方法

    如果是带参数的setter方法,就应该把参数的类型做封装成一个Class<?>泛型数组传入getMethod方法的第二个参数
    例如参数是String类型的setter方法如下

    Method m = model.getClass().getMethod("set"+name, new Class[] {String.class});
    

    执行getter方法

    String value = (String) m.invoke(model);
    

    执行setter方法

    m.invoke(model,new Object[] {new String("new value")});


    下面是网上一些朋友包装好的javabean反射方法:

    /** 
     * 根据属性名获取属性值 
     * */  
       private Object getFieldValueByName(String fieldName, Object o) {  
           try {    
               String firstLetter = fieldName.substring(0, 1).toUpperCase();    
               String getter = "get" + firstLetter + fieldName.substring(1);    
               Method method = o.getClass().getMethod(getter, new Class[] {});    
               Object value = method.invoke(o, new Object[] {});    
               return value;    
           } catch (Exception e) {    
               log.error(e.getMessage(),e);    
               return null;    
           }    
       }   
         
       /** 
        * 获取属性名数组 
        * */  
       private String[] getFiledName(Object o){  
        Field[] fields=o.getClass().getDeclaredFields();  
            String[] fieldNames=new String[fields.length];  
        for(int i=0;i<fields.length;i++){  
            System.out.println(fields[i].getType());  
            fieldNames[i]=fields[i].getName();  
        }  
        return fieldNames;  
       }  
         
       /** 
        * 获取属性类型(type),属性名(name),属性值(value)的map组成的list 
        * */  
       private List getFiledsInfo(Object o){  
        Field[] fields=o.getClass().getDeclaredFields();  
            String[] fieldNames=new String[fields.length];  
            List list = new ArrayList();  
            Map infoMap=null;  
        for(int i=0;i<fields.length;i++){  
            infoMap = new HashMap();  
            infoMap.put("type", fields[i].getType().toString());  
            infoMap.put("name", fields[i].getName());  
            infoMap.put("value", getFieldValueByName(fields[i].getName(), o));  
            list.add(infoMap);  
        }  
        return list;  
       }  
         
       /** 
        * 获取对象的所有属性值,返回一个对象数组 
        * */  
       public Object[] getFiledValues(Object o){  
        String[] fieldNames=this.getFiledName(o);  
        Object[] value=new Object[fieldNames.length];  
        for(int i=0;i<fieldNames.length;i++){  
            value[i]=this.getFieldValueByName(fieldNames[i], o);  
        }  
        return value;  
       } 
    展开全文
  • Java反射 1、创建缓存池,可以加快访问速度 private static final Map&lt;String, List&lt;Field&gt;&gt; CACHE = new HashMap&lt;String, List&lt;Field&gt;&gt;(); 2、获取...
  • Java 遍历对象属性,并将属性值不为空的取出. public void getValue(SelectIdListDto selectIdListDto){ Field[] field = selectIdListDto.getClass().getDeclaredFields(); for(int j=0 ; j; j++){
  • Java遍历对象属性

    万次阅读 2012-12-20 15:19:04
    java.util.Calendar clndr = java.util.Calendar.getInstance(); Class cls = clndr.getClass(); System.out.println(cls.getName()); java.lang.reflect.Field[] flds = cls.getFields(); if ( flds != null ) {
  • Java遍历一个类的所有属性和值

    万次阅读 2019-08-13 11:40:16
    今天在尝试使用Java反射来实现Java导出数据库数据到Excel中,然后在尝试获取类所有的属性的时候,由于对于反射的不熟练,然后找到了篇博文,所以在此进行记录,以供未来参考,原博文地址: ... private void bianLi...
  • Java遍历对象属性(反射实现)

    万次阅读 2017-01-11 15:12:58
     * 遍历对象属性值(利用反射实现),可以在需要对 对象中的每字段都执行相同的处理时使用  *  */ public class DisposeUtil { public static Object dispose(Object object){ Field[] field = object.getClass...
  • java读取文件属性java遍历文件并获取文件属性 这是代码图 话不多说直接上代码: 代码. import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java....
  • 遍历List<AccountBusiness > accountBusiness中的uuid添加到List<String> uuids内 List<String> uuids = list.stream().map(accountBusiness -> accountBusiness.getUuid()).collect...
  • 最近的项目里的一个需求,要我判断一个对象里的所有属性,是否存在值不是“”或是null的public boolean checkGoodMode(List<GoodMode> list){ int index=0; String values[] = new String[39];//这里设置39,是...
  • 如何遍历java对象属性

    千次阅读 2020-04-30 17:57:43
    我们通常直接获取json对象,或创建一个dto对象映射json对象,并将值插入到固定的地方。如果客户端传递的参数特别多,前面的一对一的操作显然不太合适,这将编写大量看起来臃肿的代码。所以,更有效的方式是遍历json...
  • Java遍历Object的属性属性值,并以String形式返回||toString()一个对象Object||将一个对象转化为字符串String1.关注每个属性组 //用List, String>> mapList 和 List都可以,最后toString一样都是ok的 String to...
  • 下面小编就为大家带来遍历json 对象属性并且动态添加属性的实现。小编觉的挺不错的,现在就分享给大家,也给大家做参考。一起跟随小编过来看看吧
  • java遍历实体类的属性和值

    千次阅读 2018-09-21 10:28:58
    代码如下: 实体类:   ...public class User implements Serializable { ... private static final long ... System.out.println("属性名:" + f.getName() + " 属性值:" + f.get(e)); } } }   输出:
  • 业务场景:一个房产交易系统中的业务需求,查询房屋交易状态接口,调用第三方接口返回一个vo对象,该对象属性主要是描述该房屋的交易情况,比如是否抵押,是否被查封等,现在需要利用该对象的值决定返回给调用方的...
  • 该博文针对有些时候我们手里有一个Bean对象,想要遍历它的每一个属性,并对其进行操作的情况。 首先说明一下,实体类反射要import的包是 import java.lang.reflect.Field; import java.lang.reflect.Method; 首先...
  • 如下所示:Java实体对象中有如下一个属性 /** * 系统员工ID集合(批量修改登录时间用) */ private long[] sysEmpIds; 则对应配置文件为(配置中<foreach>标签): <update id=...
  • * 遍历实体类的属性和数据类型以及属性值 * @param model * @throws NoSuchMethodException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException */ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 207,323
精华内容 82,929
关键字:

java遍历一个对象的属性

java 订阅