实用工具类之——Java动态获取类属性

    技术2022-07-11  133

    在使用Java反射机制的时候,动态生成class,需要获取类的属性(成员变量名称、成员变量类型,构造函数信息)。以下方法轻松助你实现。

    /** * 获取类成员变量名称 * @param o * @return */ public static String getOlapFieldNames(Object o) { Field[] fields = o.getClass().getDeclaredFields(); StringBuilder sbName = new StringBuilder(); for(int i = 0; i< fields.length; ++i) { sbName.append(fields[i].getName()); if(i < fields.length -1) { // 以逗号分割 sbName.append(","); } } return sbName.toString(); } /** * 获取类成员变量类型 * @param o * @return */ public static List<String> getOlapFieldTypes(Object o) { List<String> list = new ArrayList<>(); Field[] fields = o.getClass().getDeclaredFields(); for(Field field: fields) { Class fieldType = field.getType(); String typeName = fieldType.getName(); list.add(typeName); } return list; } /** * 打印对象的构造函数的信息 * * @param object */ public static void printConMessage(Object object) { Class<?> class1 = object.getClass(); /** * 构造函数也是对象 java.lang.Constructor中封装了构造函数的信息 * getConstructors获取所有的public的构造函数 getDeclaredConstructors得到所有的构造函数 */ Constructor[] cs = class1.getDeclaredConstructors(); for (Constructor constructor : cs) { System.out.print(constructor.getName() + "("); // 获取构造函数的参数列表--->得到的是参数列表的类类型 Class[] paramTypes = constructor.getParameterTypes(); for (Class class2 : paramTypes) { System.out.print(class2.getName() + ","); } System.out.println(")"); } }
    Processed: 0.014, SQL: 9