1
2
3
4
5
6
7
8
9
10 package tsukuba_bunko.util;
11
12 import java.lang.reflect.Method;
13
14
15 /***
16 * リフレクション操作をサポートするためのユーティリティクラスです。
17 * @author $Author: ppoi $
18 * @version $Revision: 1.1 $
19 */
20 public final class ReflectionUtil {
21
22 /***
23 * <code>ReflectionUtil</code> はインスタンスを生成できません。
24 */
25 private ReflectionUtil(){;}
26
27
28 /***
29 * メソッドを検索します。
30 * @param clazz 検索対象のクラス
31 * @param methodName 検索するメソッド名
32 * @param parameterTypes 検索するメソッドの仮引数クラスリスト(配列)
33 * @param searchSuperclasses スーパークラスを検索対象にする場合 <code>true</code>、それ以外の場合 <code>false</code>
34 * @return 検索結果。メソッドが検出されなかった場合は <code>null</code>
35 */
36 public static Method findMethod( Class clazz, String methodName, Class[] parameterTypes, boolean searchSuperclasses )
37 {
38 Method method = null;
39 do {
40 try {
41 method = clazz.getDeclaredMethod( methodName, parameterTypes );
42 }
43 catch( NoSuchMethodException nsme ) {
44
45 }
46 clazz = clazz.getSuperclass();
47 } while( (method == null) && (clazz != null) && searchSuperclasses );
48
49 return method;
50 }
51 }