package br.com.etyllica.util; import java.lang.reflect.Field; public class ReflectionUtils { /** * Equivalent to set method * Based on answer at: http://stackoverflow.com/a/14374995 * @param object * @param fieldName * @param fieldValue * @return success */ public static boolean set(Object object, String fieldName, Object fieldValue) { Class<?> clazz = object.getClass(); while (clazz != null) { try { Field field = clazz.getDeclaredField(fieldName); field.setAccessible(true); field.set(object, fieldValue); return true; } catch (NoSuchFieldException e) { clazz = clazz.getSuperclass(); } catch (Exception e) { throw new IllegalStateException(e); } } return false; } /** * Equivalent to get method * Based on answer at: http://stackoverflow.com/a/14374995 * @param object * @param fieldName * @return field value */ @SuppressWarnings("unchecked") public static <V> V get(Object object, String fieldName) { Class<?> clazz = object.getClass(); while (clazz != null) { try { Field field = clazz.getDeclaredField(fieldName); field.setAccessible(true); return (V) field.get(object); } catch (NoSuchFieldException e) { clazz = clazz.getSuperclass(); } catch (Exception e) { throw new IllegalStateException(e); } } return null; } public static Class<?> getArrayClass(Class<?> clazz) { Class<?> arrayClass = clazz; try { arrayClass = Class.forName("[L" + arrayClass.getName() + ";"); } catch (ClassNotFoundException e) { e.printStackTrace(); } return arrayClass; } }