Methodの修飾子をチェックする

Reflection APIを使ってClassのMethodを取得し、そのメソッドの修飾子をチェックする場合、次のように記述します。

if ((method.getModifiers() & Method.PUBLIC) != 0) {
  // Publicの場合の処理
}

このように書いてはいけません。

if (method.getModifiers() == Method.PUBLIC) {
  // Publicの場合の処理
}

また、1.5以上であればMethodに追加されているstaticメソッドを使う方が良いでしょう。

if (Method.isPublic(method.getModifiers())) {
  // Publicの場合の処理
}

isPublicのメソッド定義はそのまま、こんな感じです。

    public static boolean isPublic(int mod) {
	return (mod & PUBLIC) != 0;
    }