Рубрики
Без рубрики

Проверка статичности метода с использованием отражения в Java

Узнайте, как мы можем проверить, является ли метод статическим или нет.

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве мы обсудим, как мы можем проверить, является ли метод статическим или нет в Java, используя API Reflection .

2. Пример

Чтобы продемонстрировать это, мы создадим Статическую утилиту класс с некоторыми статическими методами:

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. Проверьте, является ли Метод статическим

Мы можем проверить, является ли метод статическим или нет, используя модификатор . 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. Получить все статические методы класса

Теперь, когда мы уже знаем, как проверить, является ли метод статическим или нет, мы можем легко перечислить все статические методы класса:

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

В приведенном выше коде мы только что проверили общее количество статических методов в нашем классе Статическая утилита .

5. Заключение

В этом уроке мы видели, как мы можем проверить, является ли метод статическим или нет. Мы также видели, как получить все статические методы класса.

Как всегда, полный код для этого примера доступен на GitHub .