Java >> Java tutorial >  >> Tag >> static

Kontrol af, om en metode er statisk ved hjælp af refleksion i Java

1. Oversigt

I denne hurtige selvstudie vil vi diskutere, hvordan vi kan kontrollere, om en metode er statisk eller ej i Java ved at bruge Reflection API.

2. Eksempel

For at demonstrere dette, vil vi oprette StaticUtility klasse, med nogle statiske metoder:

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. Tjek, om en metode er statisk

Vi kan kontrollere, om en metode er statisk eller ej ved at bruge Modifier.isStatic metode :

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

I ovenstående eksempel har vi først forekomsten af ​​metoden, som vi vil teste ved at bruge Class.getMethod metode. Når vi har metodereferencen, skal vi bare kalde Modifier.isStatic metode.

4. Få alle statiske Metoder for en klasse

Nu hvor vi allerede ved, hvordan man kontrollerer, om en metode er statisk eller ej, kan vi nemt liste alle de statiske metoder for en klasse:

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

I ovenstående kode har vi netop bekræftet det samlede antal statiske metoder i vores klasse StaticUtility .

5. Konklusion

I denne vejledning har vi set, hvordan vi kan kontrollere, om en metode er statisk eller ikke. Vi har også set, hvordan man henter alt det statiske også en klasses metoder.

Som altid er den komplette kode til dette eksempel tilgængelig på GitHub.


Java tag