1. 概要

このクイックチュートリアルでは、 Reflection APIを使用して、メソッドがstaticであるかどうかをJavaで確認する方法について説明します。

2. 例

これを示すために、いくつかの静的メソッドを使用してStaticUtilityクラスを作成します。

public class StaticUtility {

    public static String getAuthorName() {
        return "Umang Budhwar";
    }

    public static LocalDate getLocalDate() {
        return LocalDate.now();
    }

    public static LocalTime getLocalTime() {
        return LocalTime.now();
    }
}

3. メソッドが静的であるかどうかを確認します

Modifier.isStaticメソッドを使用して、メソッドが静的であるかどうかを確認できます。

@Test
void whenCheckStaticMethod_ThenSuccess() throws Exception {
    Method method = StaticUtility.class.getMethod("getAuthorName", null);
    Assertions.assertTrue(Modifier.isStatic(method.getModifiers()));
}

上記の例では、最初にClass.getMethodメソッドを使用してテストするメソッドのインスタンスを取得しました。 メソッド参照を取得したら、Modifier.isStaticメソッドを呼び出すだけです。

4. クラスのすべてのstaticメソッドを取得する

メソッドがstaticであるかどうかを確認する方法がわかったので、クラスのすべてのstaticメソッドを簡単にリストできます。

@Test
void whenCheckAllStaticMethods_thenSuccess() {
    List<Method> methodList = Arrays.asList(StaticUtility.class.getMethods())
      .stream()
      .filter(method -> Modifier.isStatic(method.getModifiers()))
      .collect(Collectors.toList());
    Assertions.assertEquals(3, methodList.size());
}

上記のコードでは、クラスStaticUtilitystaticメソッドの総数を確認しました。

5. 結論

このチュートリアルでは、メソッドがstaticであるかどうかを確認する方法を見てきました。 また、クラスのすべてのstaticメソッドをフェッチする方法も確認しました。

いつものように、この例の完全なコードは、GitHubから入手できます。