资讯专栏INFORMATION COLUMN

Java反射-方法

awkj / 1367人阅读

摘要:使用反射可以检视类的方法,并在运行时调用。获得方法对象通过对象获得。示例代码如下数组拥有一个类定义的所有公共方法的实例。如果方法是静态的,传代替类实例。本例中,方法需要一个,所以必须提供一个类型的参数。

使用反射可以检视类的方法,并在运行时调用。这是通过类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

相关文章

  • Java反射详细介绍

    摘要:通过反射获取带参无返回值成员方法并使用设置安全检查,访问私有构造函数必须创建实例这种不行,注意和方法需要传递参数测试复制这个功能获取私有方法,同样注意和的区别赋予访问权限调用方法。 反射 目录介绍 1.反射概述 1.1 反射概述 1.2 获取class文件对象的三种方式 1.3 反射常用的方法介绍 1.4 反射的定义 1.5 反射的组成 1.6 反射的作用有哪些 2.反射的...

    ingood 评论0 收藏0
  • Java反射学习小记

    摘要:反射使用类对象提供的基本元数据,能从类对象中找出方法或字段的名称,然后获取表示方法或字段的对象。常见的反射手段有反射和反射。以之前的反射为例其中指定了方法的返回类型,其实不止如此。 Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法 生成动态代理 很多框架...

    frank_fun 评论0 收藏0
  • Java 反射教程

    摘要:反射非常强大和有用。另外,反射可以用在映射结果集的列名到对象的方法。本教程将深入介绍反射。本教程还将清除一些关于范型信息在运行时可用性的认知混淆。类对象使用反射时,起点通常是需要使用反射检视的类的对象。 Java反射可以在运行时检视类、接口、属性和方法,而无需在编译时知道类名、方法名等等。它也同样使用反射支持实例化新的对象、调用方法和get/set属性值。 Java反射非常强大和有用...

    klivitamJ 评论0 收藏0
  • Java笔记-反射机制(一)

    摘要:反射机制一结合官方通过编写的反射教程,复习一下反射的知识。反射的概念反射是一种在运行时获取以及修改应用行为的一种工具。因为反射需要动态的解析类的信息,相比于非反射使用的方式要慢。反射需要获取一定的运行时权限,在特定的安全环境下不一定存在。 Java反射机制(一) 结合Oracle官方通过JDK8编写的反射教程,复习一下反射的知识。结尾篇补一个小例子。 主要内容 这次博客的主要内容就是简...

    AWang 评论0 收藏0
  • Java反射机制详解

    摘要:反射机制的应用实例在泛型为的中存放一个类型的对象。工厂模式可以参考现在我们利用反射机制实现工厂模式,可以在不修改工厂类的情况下添加任意多个子类。 学习交流群:669823128java 反射 定义 功能 示例概要:Java反射机制详解| |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API 通过一个对象获得完整的包名和类名 实例化Class类对象 获取一个对象的父类与...

    paraller 评论0 收藏0
  • Java 反射

    摘要:反射的使用通过反射获取构造方法并使用首先我们声明一个类方便我们进行介绍默认的构造方法默认的构造方法无参构造方法调用了公有无参构造方法执行了。。。 1.概述 1.1 什么是反射 java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 1...

    nodejh 评论0 收藏0

发表评论

0条评论

awkj

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<