码迷,mamicode.com
首页 > 编程语言 > 详细

获取Java类中所有Field

时间:2015-03-03 16:51:41      阅读:352      评论:0      收藏:0      [点我收藏+]

标签:

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;

/**
 * 反射集合类
 * */
public class ReflectUtils {
	
	/**
	 * 获取类clazz的所有Field,包括其父类的Field,如果重名,以子类Field为准。
	 * @param clazz
	 * @return Field数组
	 */
	public static Field[] getAllField(Class<?> clazz) {
		ArrayList<Field> fieldList = new ArrayList<Field>();
		Field[] dFields = clazz.getDeclaredFields();
		if (null != dFields && dFields.length > 0) {
			fieldList.addAll(Arrays.asList(dFields));
		}

		Class<?> superClass = clazz.getSuperclass();
		if (superClass != Object.class) {
			Field[] superFields = getAllField(superClass);
			if (null != superFields && superFields.length > 0) {
				for(Field field:superFields){
					if(!isContain(fieldList, field)){
						fieldList.add(field);
					}
				}
			}
		}
		Field[] result=new Field[fieldList.size()];
		fieldList.toArray(result);
		return result;
	}
	
	/**检测Field List中是否已经包含了目标field
	 * @param fieldList
	 * @param field 带检测field
	 * @return
	 */
	public static boolean isContain(ArrayList<Field> fieldList,Field field){
		for(Field temp:fieldList){
			if(temp.getName().equals(field.getName())){
				return true;
			}
		}
		return false;
	}
}


获取Java类中所有Field

标签:

原文地址:http://my.oschina.net/fengcunhan/blog/382127

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!