Java tutorial
/* 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:kraythe@arcor.de>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 + "]"); } }