1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.cubby;
17
18 import java.lang.reflect.Field;
19
20 public class TestUtils {
21
22 @SuppressWarnings("unchecked")
23 public static <T> T getPrivateField(Object obj, String fieldName)
24 throws NoSuchFieldException {
25
26 Class<?> class1 = obj.getClass();
27 final Field field = findField(class1, fieldName);
28 field.setAccessible(true);
29
30 try {
31 return (T) field.get(obj);
32 } catch (IllegalAccessException e) {
33 throw new RuntimeException(e);
34 }
35 }
36
37 private static Field findField(Class<?> clazz, String fieldName)
38 throws NoSuchFieldException {
39 for (; clazz != null; clazz = clazz.getSuperclass()) {
40 for (Field afield : clazz.getDeclaredFields()) {
41 if (afield.getName().equals(fieldName)) {
42 return afield;
43 }
44 }
45 }
46
47 throw new NoSuchFieldException(fieldName);
48 }
49
50 }