class Fields { void foo() throws Exception { Class ca = A.class; Class cb = B.class; ca.getField("a1"); ca.getField("a2"); ca.getField("a3"); ca.getField("a4"); ca.getField("b1"); ca.getField("b2"); ca.getField("b3"); ca.getField("b4"); cb.getField("a1"); cb.getField("a2"); cb.getField("a3"); cb.getField("a4"); cb.getField("b1"); cb.getField("b2"); cb.getField("b3"); cb.getField("b4"); ca.getDeclaredField("a1"); ca.getDeclaredField("a2"); ca.getDeclaredField("a3"); ca.getDeclaredField("a4"); ca.getDeclaredField("b1"); ca.getDeclaredField("b2"); ca.getDeclaredField("b3"); ca.getDeclaredField("b4"); cb.getDeclaredField("a1"); cb.getDeclaredField("a2"); cb.getDeclaredField("a3"); cb.getDeclaredField("a4"); cb.getDeclaredField("b1"); cb.getDeclaredField("b2"); cb.getDeclaredField("b3"); cb.getDeclaredField("b4"); C.class.getField("c"); C.class.getField("d"); } static class A { public int a1; protected int a2; int a3; private int a4; } static class B extends A { public int b1; protected int b2; int b3; private int b4; } static final class C extends A { public int c; } }