Java反射获取类的所有字段名称

更新时间:2023-07-15 13:51:18 阅读: 评论:0

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);
}

本文发布于:2023-07-15 13:51:18,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1082465.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   基本   包括   获取
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图