java获取类中的属性和值
来源:互联网 发布:实时跟踪软件 编辑:程序博客网 时间:2024/06/05 09:46
java中反射是一种非常神奇的机制,通过反射,我可以知道我的某个类含有那些属性,那些方法,继承自那个类,又有什么样的构造方法。如果我们要大量获取类中的内容,但事先我并不知道这个类中有什么样的属性,有什么样的方法,我们该怎么办。按照一般的逻辑,是没办法实现的,因为未知的东西我没办法去已知其属性。这样就通过反射来实现了。
建立一个实体类:Dog
public class Dog {private String name;private String sex;private int age;public Dog() {}public Dog(String name, String sex, int age) {super();this.name = name;this.sex = sex;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
然后是一个测试类,Test:
import java.lang.reflect.Field;import java.lang.reflect.Method;public class Test {public static void main(String[] args) {Dog dog = new Dog("小黑", "雄", 2);show(Dog.class, dog);}public static void show(Class<?> clazz, Object obj) {Field[] fileds = clazz.getDeclaredFields();for (Field f : fileds) {System.out.println("----属性:"+getFiled(f)+"--------值:"+getFieldValue(obj, getFiled(f)));}}public static String getFiled(Field f) {String str = f.toString().substring(f.toString().lastIndexOf('.') + 1,f.toString().length());return str.substring(0, 1).toUpperCase() + str.replaceFirst("\\w", "");} /** * 获取对象的属性和属性值 * * @author ghj * @param jointPoint * @return * @throws Throwable */ public static String getFieldValue(Object owner, String fieldName) { if(invokeMethod(owner, fieldName, null)!=null){ return invokeMethod(owner, fieldName, null).toString(); }else{ return "null"; } } /** * * 执行某个Field的getField方法 * * @param owner * 类 * @param fieldName * 类的属性名称 * @param args * 参数,默认为null * @return */ private static Object invokeMethod(Object owner, String fieldName, Object[] args) { Class<? extends Object> ownerClass = owner.getClass(); // fieldName -> FieldName String methodName = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); Method method = null; try { method = ownerClass.getMethod("get" + methodName); } catch (SecurityException e) { // e.printStackTrace(); } catch (NoSuchMethodException e) { // e.printStackTrace(); return ""; } // invoke getMethod try { return method.invoke(owner); } catch (Exception e) { return ""; } }}
然后得到测试的结果
----属性:Name--------值:小黑----属性:Sex--------值:雄----属性:Age--------值:2
神奇的java
- java获取类中的属性和值
- java反射获取类的属性名和属性值
- Java获取配置文件中的属性值通用类
- cordys java获取匿名类中的属性
- java中遍历类中的属性和属性值
- Java反射获取类的属性值和方法
- java反射:获取父类中的所有属性和方法工具类
- java反射:获取父类中的所有属性和方法工具类
- Java中用反射的方式获取类中的所有属性和方法,以及获取属性的默认值,设置属性的默认值
- Java中用反射的方式获取类中的所有属性和方法,以及获取属性的默认值,设置属性的默认值
- java反射获取每个属性和属性值
- 获取EXTJS中的FormPanel的所有控件值和属性
- 获取EXTJS中的FormPanel的所有控件值和属性
- 反射方式获取父类中的所有属性和方法
- 获取graphics中的属性值
- jsonStore获取属性中的值
- java获取bean中的所有属性
- Java反射获取类的属性值
- shell cmd
- 深刻理解Java编程的7个例子
- Kindle阅读软件
- PS流格式
- JDK1.6安装与环境变量设置详细图解
- java获取类中的属性和值
- 前、中、后缀表达式
- Xcode5的新特性
- Android图片相关问题收集(之后整理)
- 数据结构(4)之线性表之单链式存储
- #region使用
- MongoDB ObjectId的优化
- 排序算法-桶排序
- 使用POI输出EXCEL表格 一个程序