反射可以破坏所有的封装性,比如这次通过反射得到的属性与属性值;
/\*\* \* 得到属性值 \* @param obj \*/ public static void readAttributeValue(Object obj){ String nameVlues=""; //得到class Class cls = obj.getClass(); //得到所有属性 Field\[\] fields = cls.getDeclaredFields(); for (int i=0;i<fields.length;i++){//遍历 try { //得到属性 Field field = fields\[i\]; //打开私有访问 field.setAccessible(true); //获取属性 String name = field.getName(); //获取属性值 Object value = field.get(obj); //一个个赋值 nameVlues += field.getName()+":"+value+","; } catch (IllegalAccessException e) { e.printStackTrace(); } }
//获取最后一个逗号的位置
int lastIndex = nameVlues.lastIndexOf(",");
//不要最后一个逗号"," String result= nameVlues.substring(0,lastIndex); System.out.println(result); }
我们再来看看输出的结果吧:
数据是提前通过set的方法赋值的
原文地址:https://www.cnblogs.com/javaLin/p/8341388.html