Here you can find the source of setField(Field f, Object instance, Object value)
public static void setField(Field f, Object instance, Object value)
//package com.java2s; /**/*from w w w .j av a 2s .c o m*/ * Copyright 2005-2014 Red Hat, Inc. * * Red Hat licenses this file to you under the Apache License, version * 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class Main { public static void setField(Field f, Object instance, Object value) { try { boolean oldAccessible = f.isAccessible(); boolean shouldSetAccessible = !Modifier.isPublic(f.getModifiers()) && !oldAccessible; if (shouldSetAccessible) { f.setAccessible(true); } f.set(instance, value); if (shouldSetAccessible) { f.setAccessible(oldAccessible); } } catch (Exception ex) { throw new UnsupportedOperationException( "Cannot inject value of class: " + value.getClass() + " into: " + f); } } }