在使用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(")");
}
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-8771.html