| 
   
  
   | 
  /*
 Before: [a=21.25, b=54.5, c=5665, d=2043, e=3121, f=1019]
 After: [a=21.25, b=54.5, c=0, d=0, e=0, f=0]
 
 */
 /*
 *
 * This software is granted under the terms of the Common Public License,
 * CPL, which may be found at the following URL:
 * http://www-124.ibm.com/developerworks/oss/CPLv1.0.htm
 *
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.
 * All Rights are Reserved by the various authors.
 *
 ########## DO NOT EDIT ABOVE THIS LINE ########## */
 
 import java.lang.reflect.Field;
 
 /**
 * Demonstrates how to set public field objects.
 *
 * @author <a href=mailto:[email protected]>Robert Simmons jr. (kraythe)</a>
 * @version $Revision: 1.3 $
 */
 public class HiddenFieldModification {
 /**
 * Sets all int fields in an object to 0.
 *
 * @param obj The object to operate on.
 *
 * @throws RuntimeException If there is a reflection problem.
 */
 public static void initIntFields(final Object obj) {
 try {
 Field[] fields = obj.getClass()
 .getDeclaredFields();
 for (int idx = 0; idx < fields.length; idx++) {
 if (fields[idx].getType() == int.class) {
 fields[idx].setAccessible(true);
 fields[idx].setInt(obj, 0);
 }
 }
 } catch (final IllegalAccessException ex) {
 throw new RuntimeException(ex);
 }
 }
 
 /**
 * Demo Method.
 *
 * @param args Command line arguments.
 */
 public static final void main(final String[] args) {
 SomeNumbers value = new SomeNumbers();
 System.out.println("Before: " + value);
 initIntFields(value);
 System.out.println("After: " + value);
 }
 }
 class SomeNumbers {
 /** A demo double. */
 public double a = 21.25d;
 
 /** A demo float. */
 public float b = 54.5f;
 
 /** A Demo int */
 public int c = 5665;
 
 /** Another demo int. */
 public int d = 2043;
 
 /** Another demo int. */
 protected int e = 3121;
 
 /** Another demo int. */
 private int f = 1019;
 
 /**
 * @see java.lang.Object#toString()
 */
 public String toString() {
 return new String("[a=" + a + ", b=" + b + ", c=" + c + ", d=" + d + ", e=" + e
 + ", f=" + f + "]");
 }
 }
 
 
 
 
 
 
 
 |  |