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

 

Java中,可以使用反射机制来遍历类的各个属性。通过获取类的Class对象,可以使用`getDeclaredFields()`方法获取类的所有属性。然后可以使用`setAccessible(true)`方法来设置属性的可访问性,以便在私有属性上进行操作。接下来,可以使用`getName()`方法获取属性的名称,使用`get()`方法获取属性的值。以下是一个示例代码: ```java Class<?> clazz = YourClass.class; Field\[\] fields = clazz.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); String fieldName = field.getName(); Object fieldValue = field.get(yourObject); System.out.println(fieldName + " --> " + fieldValue); } ``` 在上面的代码中,`YourClass`是你要遍历属性的类名,`yourObject`是该类的一个实例。通过遍历`fields`数组,可以获取每个属性的名称和值,并进行相应的操作。请注意,你需要替换`YourClass`和`yourObject`为你实际使用的类和对象。 希望这可以帮助到你!\[1\] #### 引用[.reference_title] - *1* [遍历获取某个类的所有属性属性值](https://blog.csdn.net/ggggd233/article/details/112831212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [java遍历实体类属性值](https://blog.csdn.net/weixin_30356285/article/details/114466045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值