Java反射获取类的所有字段名称
@Test
public void test2() {
List<String> childerField = getChilderField(PotentialSurveyRuleDTO.class);
System.out.println(childerField.size());
for (String s : childerField) {
System.out.println(s);
}
}
public static List<String> getChilderField(Class clazz) {
List<String> list = new ArrayList<>();
Field[] declaredFields = DeclaredFields();
list.addAll(getDeclaredField(clazz));
棉袄能用洗衣机洗吗for (Field declaredField : declaredFields) {双子男和双子女
Class<?> type = Type();
if (isBaType(type, true)) {
list.Name());
} el if (isCollection(type)) {
list.Name());
list.addAll(getCollectionField(declaredField));
} el {
list.Name());
list.addAll(getDeclaredField(type));
list.addAll(getChilderField(type));
}
}
线粒体基质return list;
}
public static List<String> getCollectionField(Field field) {
List<String> list = new ArrayList<>();
康鼠合轮螨Class<?> clazzField = Type();
if (clazzField == Map.class) {
ParameterizedType parameterizedType = (ParameterizedType) GenericType();
Class key = (Class) ActualTypeArguments()[0];
Class value = (Class) ActualTypeArguments()[1];
list.addAll(getDeclaredField(key));
list.addAll(getDeclaredField(value));
list.addAll(getChilderField(key));
list.addAll(getChilderField(value));
} el if (clazzField == List.class) {
ParameterizedType parameterizedType = (ParameterizedType) GenericType();
Class clazz = (Class) ActualTypeArguments()[0];
list.addAll(getDeclaredField(clazz));
list.addAll(getChilderField(clazz));
} el if (clazzField == Set.class) {
ParameterizedType parameterizedType = (ParameterizedType) GenericType();
Class clazz = (Class) ActualTypeArguments()[0];
list.addAll(getDeclaredField(clazz));
list.addAll(getChilderField(clazz));
}
return list;
}
public static boolean isCollection(Class clazzField) {
if (clazzField == Map.class) {
return true;
} el if (clazzField == List.class) {
return true;
} el if (clazzField == Set.class) {
return true;
}
}
return fal;
}
/**
虚无法杖* 循环向上转型, 获取对象的 DeclaredField
*
* @return ⽗类中的属性对象
*/
public static List<String> getDeclaredField(Class clazz) {
List<String> list = new ArrayList<>();
for (; clazz != null && clazz != Object.class; clazz = Superclass()) {
Field[] declaredFields = DeclaredFields();
for (Field declaredField : declaredFields) {
list.Name());
}
}
return list;什么专业就业前景好
}
/**
* 判断对象属性是否是基本数据类型,包括是否包括string
*
冰糖葫芦的制作
* @param className
* @param incString 是否包括string判断,如果为true就认为string也是基本数据类型 * @return
*/
public static boolean isBaType(Class className, boolean incString) {
if (incString && className.equals(String.class)) {
return true;
}
return className.equals(Integer.class) ||
className.equals(int.class) ||
className.equals(Byte.class) ||
className.equals(byte.class) ||
className.equals(Long.class) ||新增固定资产
className.equals(long.class) ||
className.equals(Double.class) ||
className.equals(double.class) ||
className.equals(Float.class) ||
className.equals(float.class) ||
className.equals(Character.class) ||
className.equals(char.class) ||
className.equals(Short.class) ||
className.equals(short.class) ||
className.equals(Boolean.class) ||
className.equals(boolean.class) ||
className.equals(Date.class);
}