摘要:使用反射可以检视类的方法,并在运行时调用。获得方法对象通过对象获得。示例代码如下数组拥有一个类定义的所有公共方法的实例。如果方法是静态的,传代替类实例。本例中,方法需要一个,所以必须提供一个类型的参数。
使用反射可以检视类的方法,并在运行时调用。这是通过类java.lang.reflect.Method实现的。本文将深入介绍Method对象。
获得方法对象Method通过Class对象获得。示例代码如下:
Class aClass = ...//obtain class object Method[] methods = aClass.getMethods();
Method[] 数组拥有一个类定义的所有公共方法的实例。
如果知道方法参数的精确类型,有比获得所有方法更优的(获得方法的方式)。本例中,名为doSomething的方法需要一个String类型的参数:
Class aClass = ...//obtain class object Method method = aClass.getMethod("doSomething", new Class[]{String.class});
如果没有方法匹配给定的方法名和参数,如例子中的String.class,将抛出NoSuchMethodException。
如果你尝试访问没有参数的方法,传null代替参数数组,如下:
Class aClass = ...//obtain class object Method method = aClass.getMethod("doSomething", null);方法参数和返回值类型
你可以通过如下代码获得方法的参数类型列表:
Method method = ... // obtain method - see above Class[] parameterTypes = method.getParameterTypes();
访问方法返回值的代码如下:
Method method = ... // obtain method - see above Class returnType = method.getReturnType();使用方法对象调用方法
调用方法的代码如下:
//get method that takes a String as argument Method method = MyObject.class.getMethod("doSomething", String.class); Object returnValue = method.invoke(null, "parameter-value1");
null参数是拥有你想调用方法的实例。如果方法是静态的,传null代替类实例。本例中,如果doSomething(String.class) 不是静态的,必须传有效的MyObject类的实例代替null。
Method.invoke(Object target, Object ... parameters)方法的参数是可变参,但你调用时必须保证型参、实参一一对应。本例中,方法需要一个String,所以必须提供一个String类型的参数。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/77251.html
摘要:通过反射获取带参无返回值成员方法并使用设置安全检查,访问私有构造函数必须创建实例这种不行,注意和方法需要传递参数测试复制这个功能获取私有方法,同样注意和的区别赋予访问权限调用方法。 反射 目录介绍 1.反射概述 1.1 反射概述 1.2 获取class文件对象的三种方式 1.3 反射常用的方法介绍 1.4 反射的定义 1.5 反射的组成 1.6 反射的作用有哪些 2.反射的...
摘要:反射使用类对象提供的基本元数据,能从类对象中找出方法或字段的名称,然后获取表示方法或字段的对象。常见的反射手段有反射和反射。以之前的反射为例其中指定了方法的返回类型,其实不止如此。 Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法 生成动态代理 很多框架...
摘要:反射机制一结合官方通过编写的反射教程,复习一下反射的知识。反射的概念反射是一种在运行时获取以及修改应用行为的一种工具。因为反射需要动态的解析类的信息,相比于非反射使用的方式要慢。反射需要获取一定的运行时权限,在特定的安全环境下不一定存在。 Java反射机制(一) 结合Oracle官方通过JDK8编写的反射教程,复习一下反射的知识。结尾篇补一个小例子。 主要内容 这次博客的主要内容就是简...
摘要:反射机制的应用实例在泛型为的中存放一个类型的对象。工厂模式可以参考现在我们利用反射机制实现工厂模式,可以在不修改工厂类的情况下添加任意多个子类。 学习交流群:669823128java 反射 定义 功能 示例概要:Java反射机制详解| |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API 通过一个对象获得完整的包名和类名 实例化Class类对象 获取一个对象的父类与...
阅读 2800·2023-04-26 02:00
阅读 2728·2019-08-30 15:54
阅读 830·2019-08-30 11:15
阅读 1457·2019-08-29 15:31
阅读 888·2019-08-29 14:12
阅读 465·2019-08-29 13:08
阅读 794·2019-08-27 10:51
阅读 2670·2019-08-26 12:17