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