View Javadoc

1   /*
2    * Common Library for TBAS Softwares
3    * Language: Java
4    *
5    * All Rights Reserved.
6    * Copyright (c) 1999-2003 Tsukuba Bunko.
7    *
8    * $Id: ReflectionUtil.java,v 1.1 2005/07/11 12:49:19 ppoi Exp $
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  				//ignore.
45  			}
46  			clazz = clazz.getSuperclass();
47  		} while( (method == null) && (clazz != null) && searchSuperclasses );
48  
49  		return method;
50  	}
51  }