返回给定属性的字段,无论该字段是可见的还是隐藏的,或者是在给定的类或超类中声明的。
/* * Copyright (c) 2012 Data Harmonisation Panel * * All rights reserved. This program and the accompanying materials are made * available under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution. If not, see <http://www.gnu.org/licenses/>. * * Contributors: * HUMBOLDT EU Integrated Project #030962 * Data Harmonisation Panel <http://www.dhpanel.eu> */ //package com.nowjava; import java.lang.reflect.Field; /* NowJava.com 提 供 */ public class Main { /** * Returns a field for a given property, no matter if the field is visible * or hidden or if it is declared in the given class or in a superclass. * * @param c the class which would contain the field * @param property the property * @param propertyType the property's type * @return the field or null if there is no field for this property */ public static Field findDeepField(Class<?> c, String property, Class<?> propertyType) { if (c == Object.class || c == null) { return null; } /* 来自 *N o w J a v a . c o m*/ Field result = null; // search visible and hidden fields in this class Field[] fields = c.getDeclaredFields(); for (Field f : fields) { String fn = f.getName(); if (fn.charAt(0) == '_') { // handle code style fn = fn.substring(1); } if (fn.equals(property) && (propertyType == null || f.getType()