设为首页 加入收藏

TOP

【Java面试指北】反射(1) 初识反射(二)
2023-07-25 21:38:14 】 浏览:40
Tags:Java 反射
laredMethods获取的方法:"); for(Method m:declaredMethods) System.out.println(m); } } class MyClass { public int add(int a, int b) { return a + b; } public int sub(int a, int b) { return a - b; } } // 输出 /* getMethods获取的方法: public int com.shuofxz.basic.ReflectDemo$MyClass.add(int,int) public int com.shuofxz.basic.ReflectDemo$MyClass.sub(int,int) public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException public final void java.lang.Object.wait() throws java.lang.InterruptedException public boolean java.lang.Object.equals(java.lang.Object) public java.lang.String java.lang.Object.toString() public native int java.lang.Object.hashCode() public final native java.lang.Class java.lang.Object.getClass() public final native void java.lang.Object.notify() public final native void java.lang.Object.notifyAll() getDeclaredMethods获取的方法: public int com.shuofxz.basic.ReflectDemo$MyClass.add(int,int) public int com.shuofxz.basic.ReflectDemo$MyClass.sub(int,int) */

五)调用方法

当我们从类中获取了一个方法后,我们就可以用 invoke() 来调用这个方法。

public class ReflectDemo {
	public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        Class<?> mc = MyClass.class;
        Object obj = mc.newInstance();
        //获取methodClass类的add方法
        Method method = mc.getMethod("add", int.class, int.class);
        //调用method对应的方法 => add(1,4)
        Object result = method.invoke(obj, 1, 4);
        System.out.println(result);
    }
}

六)获取构造器、类的成员变量(字段)信息

  • 通过 Class 类的 getConstructor 方法得到 Constructor 类的一个实例
  • getFiled:访问公有的成员变量
  • getDeclaredField:所有已声明的成员变量,但不能得到其父类的成员变量

四、小结

本篇文章初步介绍了反射机制。让大家了解了反射是什么,为什么会有反射这个功能,以及一些基本使用方式。后续文章将会反射的机制和原理做进一步的讲解。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SpringCloud微服务框架复习笔记 下一篇使用记事本编写第一行代码

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目