Перейти к основному содержимому

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

· 2 мин. чтения

1. Обзор

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

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. Получить все статические методы класса

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

@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());
}

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

5. Вывод

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

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