MST

星途 面试题库

面试题:Java中反射如何获取基础类的方法

在Java反射机制中,若有一个基础类如`java.util.Date`,请描述如何通过反射获取该类中的`getTime`方法,并说明`getMethod`和`getDeclaredMethod`方法的区别。
21.8万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 通过反射获取java.util.Date类中的getTime方法
import java.lang.reflect.Method;
public class DateReflectionExample {
    public static void main(String[] args) {
        try {
            // 获取Date类的Class对象
            Class<?> dateClass = Class.forName("java.util.Date");
            // 通过反射获取getTime方法
            Method getTimeMethod = dateClass.getMethod("getTime");
            // 创建Date类的实例
            java.util.Date date = new java.util.Date();
            // 调用getTime方法
            long time = (long) getTimeMethod.invoke(date);
            System.out.println("当前时间的毫秒数: " + time);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. getMethodgetDeclaredMethod方法的区别
    • getMethod
      • 用于获取类及其父类中声明为public的方法。
      • 例如,假设类B继承自类A,在类A中有一个public方法publicMethod,在类B中调用getMethod("publicMethod")能够获取到该方法,即使该方法是在父类A中定义的。
    • getDeclaredMethod
      • 用于获取类自身声明的方法,无论该方法的访问修饰符是什么(publicprivateprotected或默认),但不会获取继承自父类的方法。
      • 例如,假设类C中有一个private方法privateMethod,调用getDeclaredMethod("privateMethod")可以获取到该方法,但是如果要调用该private方法,需要先通过setAccessible(true)来打破Java的访问控制检查。