Java examples for Reflection:Field Set
set Object Field
//package com.java2s; import java.lang.reflect.Field; import java.util.HashMap; public class Main { private static HashMap<String, Field> sFieldCache = new HashMap<String, Field>(); public static void setObjectField(Object object, String fieldName, Object value) {/*from w ww.ja v a 2 s.c om*/ try { Field field = getField(object.getClass(), fieldName); field.set(object, value); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (Throwable e) { e.printStackTrace(); } } private static Field getField(Class<?> clazz, String fieldName) throws Throwable { String fieldFullName = genFieldFullName(clazz, fieldName); if (sFieldCache.containsKey(fieldFullName)) return sFieldCache.get(fieldFullName); Field field = null; try { field = clazz.getField(fieldName); } catch (NoSuchFieldException e) { } if (field == null) { try { field = clazz.getDeclaredField(fieldName); field.setAccessible(true); } catch (NoSuchFieldException e) { } } if (field == null) { for (clazz = clazz.getSuperclass(); clazz != Object.class; clazz = clazz .getSuperclass()) { try { field = clazz.getDeclaredField(fieldName); field.setAccessible(true); } catch (NoSuchFieldException e) { } } } if (field == null) { String msg = ""; msg = "Can't get Field from Class " + clazz.getSimpleName() + ":" + fieldName; throw new Throwable(msg); } sFieldCache.put(fieldFullName, field); return field; } public static Class<?> getClass(String className) { Class<?> clazz = null; try { clazz = Class.forName(className); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return clazz; } public static Class<?> getClass(String className, boolean shouldInitialize, ClassLoader classLoader) { Class<?> clazz = null; try { clazz = Class.forName(className, shouldInitialize, classLoader); } catch (ClassNotFoundException e) { e.printStackTrace(); } return clazz; } private static String genFieldFullName(Class<?> clazz, String fieldName) { StringBuilder name = new StringBuilder(); name.append(clazz.getName()); name.append(":"); name.append(fieldName); return name.toString(); } }