1. Overview

In this quick tutorial, we’ll discuss how we can check if a method is static or not in Java by using the Reflection API.

2. Example

To demonstrate this, we’ll create StaticUtility class, with some static methods:

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. Check if a Method Is static

We can check if a method is static or not by using the Modifier.isStatic method:

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

In the above example, we’ve first got the instance of the method which we want to test by using the Class.getMethod method. Once we have the method reference, all we need to do is just call the Modifier.isStatic method.

4. Get All static Methods of a Class

Now that we already know how to check if a method is static or not, we can easily list all the static methods of a class:

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

In the above code, we’ve just verified the total number of static methods in our class StaticUtility.

5. Conclusion

In this tutorial, we’ve seen how we can check if a method is static or not. We’ve also seen how to fetch all the static methods of a class as well.

As always, the complete code for this example is available over on GitHub.