Kiểm tra một method có phải là Static với Java Reflection

Trong bài viết ngắn này chúng ta sẽ cùng nhau tìm hiểu cách kiểm tra một method có phải là static hay không bằng cách sử dụng Java Reflection.

Kiểm tra static method trong Java

Giả sử chúng ta có StaticUtility class với một số static method như sau

public class StaticUtility {

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

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

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

Để kiểm tra một method có phải là static method hay không chúng ta sẽ sử dụng Modifier.isStatic từ Java Reflection API cung cấp.

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Main {

    public static void main(String[] args) throws NoSuchMethodException{
        Method method = StaticUtility.class.getMethod("getAuthorName", null);

        System.out.println("Static method: " + Modifier.isStatic(method.getModifiers()));

    }
}

Output: Static method: true

Lấy tất cả các static method trong một class

Sau khi đã biết cách kiểm tra một method có phải là static method không chúng ta có thể nâng cấp ví dụ lên một chút bằng cách liệt kê tất cả các static method có trong class. 

public class Main {

    public static void main(String[] args) {
        List<Method> methodList = Arrays.asList(StaticUtility.class.getMethods())
                .stream()
                .filter(method -> Modifier.isStatic(method.getModifiers()))
                .collect(Collectors.toList());

        System.out.println("Static method list: ");
        for (Method method : methodList) {
            System.out.println(method.getName());
        }
    }
}

Output

Static method list: 
getAuthorName
getLocalTime
getLocalDate

Tóm lược

Qua bài viết này chúng ta đã biết cách kiểm tra một method có phải là static method hay không thông qua Java Reflection. Mình vẫn xin nhắc lại rằng các bạn nên hạn chế sử dụng Reflection vì chúng rất phức tạp và khó bảo trì.

Nguồn: Baeldung

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x