Here is a funny bit of Java code:
private static class Root { protected Root(final String intFieldName) { try { final Field i = getClass().getDeclaredField(intFieldName); i.setAccessible(true); i.set(this, 4); } catch (final NoSuchFieldException e) { throw new IllegalArgumentException(intFieldName); } catch (IllegalAccessException e) { throw new IllegalArgumentException(intFieldName); } } } private static class Branch extends Root { private int i = 3; public Branch() { super("i"); System.out.println("i = " + i); } }
What does new Branch()
print? A better question, why?
UPDATE: A great answer to my question.
1 comment:
See why at http://jroller.com/page/eu/20050204 :-)
Post a Comment