Java examples for Reflection:Field
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.
/*/*from www . ja va 2 s.c o m*/ * 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.java2s; import java.lang.reflect.Field; 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; } 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() .isAssignableFrom(propertyType))) { result = f; break; } } // search superclass if (result == null) { result = findDeepField(c.getSuperclass(), property, propertyType); } return result; } }