反射(5)--Method类

本文详细介绍了如何使用Java反射机制获取类的方法,包括公共方法和私有方法。通过Class类的各种方法,如getMethods(), getDeclaredMethods(), getMethod() 和 getDeclaredMethod(),可以访问和调用目标对象的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取Method类

         通过Class类的以下方法,我们可以获得构造器。

l  public Method [] getMethods ():获取自己的包括父亲的公共方法

l  public Method [] getDeclaredMethods():获取自己的所有的方法

l  public MethodgetMethod(String name,Class<?>... parameterTypes):获取单个公共方法,第一个参数表示的方法名,第二个参数表示的是方法的参数的class类型。

// 获取字节码文件对象

Class c = Class.forName("cn.itcast_01.Person");

// 获取不带参数的show方法

Method m1 = c.getMethod("show");

// 通过无参构造方法创建对象

Constructor con =c.getConstructor();

Object obj =con.newInstance();

m1.invoke(obj);// 调用obj对象的m1方法

// 获取带参数的method方法

Method m2 = c.getMethod("method",String.class);

m2.invoke(obj,"hello"); //调用obj对象的m2方法,并传入参数“hello”

l  public Method getDeclaredMethod (String name):获取单个方法(包括私有的,但要用Method类的setAccessible方法设置访问权限),第一个参数表示的方法名,第二个参数表示的是方法的参数的class类型。

// 获取字节码文件对象

Class c = Class.forName("cn.itcast_01.Person");

// 获取私有的function方法

Method m4 = c.getDeclaredMethod("function");

// 通过无参构造方法创建对象

Constructor con =c.getConstructor();

Object obj =con.newInstance();

m4.setAccessible(true);// 取消Java语言访问检查

m4.invoke(obj);// 调用obj对象的m1方法

Method类的常用方法
l  public void setAccessible(boolean flag):值为true则指示反射的对象在使用时应该取消Java语言访问检查。

l  public Object invoke(Object obj , Object... args):对带有参数的指定对象obj调用由此 Method 对象表示的底层方法,如果方法有返回值,则返回Object类型的值

         // 获取字节码文件对象

Class c = Class.forName("cn.itcast_01.Person");

// 获取私有的function方法

Method m4 = c.getDeclaredMethod("function");

// 通过无参构造方法创建对象

Constructor con =c.getConstructor();

Object obj =con.newInstance();

m4.setAccessible(true);// 取消Java语言访问检查

m4.invoke(obj);// 调用obj对象的m1方法

 

// 获取toString方法

Method m5 = c.getMethod("toString" ,String.class);

Stringstr=(String)m5.invoke(obj , “hello”);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值