メソッド一覧を取得する

ちょっと該当クラスのメソッド一覧を取得する必要があったためサンプルコードを書いた。

サンプルコード

try {
	Class<?> clazz = Class.forName("java.lang.String");

	String className = clazz.getName();
	//Method[] methods = clazz.getMethods();
	Method[] methods = clazz.getDeclaredMethods();

	StringBuilder builder = new StringBuilder();
	for (Method method : methods) {
		String methodName = method.getName();
		builder.append(className).append("#");
		builder.append(methodName).append("(");

		Class<?>[] parameterTypes = method.getParameterTypes();
		for (int i = 0; i < parameterTypes.length; i++) {
			Class<?> parameterType = parameterTypes[i];
			builder.append(parameterType.getName());
			if (i + 1 < parameterTypes.length) {
				builder.append(", ");
			}
		}
		builder.append(")");
		builder.append(System.getProperty("line.separator"));
	}
	System.out.println(builder.toString());
} catch (Exception e) {
	e.printStackTrace();
}

出力結果

java.lang.String#equals(java.lang.Object)
java.lang.String#toString()
java.lang.String#hashCode()
java.lang.String#compareTo(java.lang.String)
java.lang.String#compareTo(java.lang.Object)
java.lang.String#indexOf(int)
java.lang.String#indexOf(java.lang.String)
java.lang.String#indexOf([C, int, int, [C, int, int, int)
java.lang.String#indexOf(java.lang.String, int)
java.lang.String#indexOf(int, int)
java.lang.String#valueOf(java.lang.Object)
java.lang.String#valueOf(double)
java.lang.String#valueOf(float)
java.lang.String#valueOf(long)
java.lang.String#valueOf(int)
java.lang.String#valueOf(char)
java.lang.String#valueOf(boolean)
java.lang.String#valueOf([C, int, int)
java.lang.String#valueOf([C)
java.lang.String#checkBounds([B, int, int)
java.lang.String#length()
java.lang.String#isEmpty()
java.lang.String#charAt(int)
java.lang.String#codePointAt(int)
java.lang.String#codePointBefore(int)
java.lang.String#codePointCount(int, int)
java.lang.String#offsetByCodePoints(int, int)
java.lang.String#getChars([C, int)
java.lang.String#getChars(int, int, [C, int)
java.lang.String#getBytes(java.lang.String)
java.lang.String#getBytes(int, int, [B, int)
java.lang.String#getBytes(java.nio.charset.Charset)
java.lang.String#getBytes()
java.lang.String#contentEquals(java.lang.StringBuffer)
java.lang.String#contentEquals(java.lang.CharSequence)
java.lang.String#equalsIgnoreCase(java.lang.String)
java.lang.String#compareToIgnoreCase(java.lang.String)
java.lang.String#regionMatches(int, java.lang.String, int, int)
java.lang.String#regionMatches(boolean, int, java.lang.String, int, int)
java.lang.String#startsWith(java.lang.String, int)
java.lang.String#startsWith(java.lang.String)
java.lang.String#endsWith(java.lang.String)
java.lang.String#lastIndexOf(java.lang.String, int)
java.lang.String#lastIndexOf(int)
java.lang.String#lastIndexOf(int, int)
java.lang.String#lastIndexOf(java.lang.String)
java.lang.String#lastIndexOf([C, int, int, [C, int, int, int)
java.lang.String#substring(int, int)
java.lang.String#substring(int)
java.lang.String#subSequence(int, int)
java.lang.String#concat(java.lang.String)
java.lang.String#replace(java.lang.CharSequence, java.lang.CharSequence)
java.lang.String#replace(char, char)
java.lang.String#matches(java.lang.String)
java.lang.String#contains(java.lang.CharSequence)
java.lang.String#replaceFirst(java.lang.String, java.lang.String)
java.lang.String#replaceAll(java.lang.String, java.lang.String)
java.lang.String#split(java.lang.String)
java.lang.String#split(java.lang.String, int)
java.lang.String#toLowerCase()
java.lang.String#toLowerCase(java.util.Locale)
java.lang.String#toUpperCase(java.util.Locale)
java.lang.String#toUpperCase()
java.lang.String#trim()
java.lang.String#toCharArray()
java.lang.String#format(java.lang.String, [Ljava.lang.Object;)
java.lang.String#format(java.util.Locale, java.lang.String, [Ljava.lang.Object;)
java.lang.String#copyValueOf([C)
java.lang.String#copyValueOf([C, int, int)
java.lang.String#intern()

※2013/1/30 修正

  • 親クラスのメソッドまですべて取得するgetMethods()を使用していたため、宣言されているメソッドのみを取得するgetDeclaredMethods()に変更しました。