您的位置 首页 java

反射java调用方法_java 使用反射调用方法

每个Method的对象对应一个具体的底层方法。获得Method对象后,程序可以使用Method里面的invoke方法来执行该底层方法。

Object invoke(Object obj,Object … args):obj表示调用底层方法的对象,后面的args表示传递的实际参数。

如果底层方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null,想想为什么?

如果底层方法所需的 形参 个数为 0,则所提供的 args 数组长度可以为 0 或 null。

不写,null,或 new Object[]{}

若底层方法返回的是数组类型,invoke方法返回的不是底层方法的值,而是底层方法的返回类型;

package junereflect624;

import java .lang.reflect.Method;

class Dept{

public String show(String name){//用反射的方法来调用正常的方法

return name+”,您好!”;

}

private void privateshow(){//用反射来实现对私有化方法的调用

System.out.println(“privateshow”);

}

public static void staticshow(){

System.out.println(“staticshow”);

}

}

public Class InvokeDemo9 {

public static void main(String[] args) throws Exception {

/* 传统方式:

String name = new Dept().show(“张三”);

System.out.println(name);*/

/**

* Method getMethod(String name, Class>… parameterTypes)

返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。

name-方法名

parameterTypes-参数列表

*/

//想要通过反射来调用Dept中的方法

Class c = Dept.class;

Method m = c.getMethod(“show”, String.class);

Object o = m.invoke(c.newInstance(), “刘昭”);

System.out.println(o);

//私有化的方法

m = c.getDeclaredMethod(“privateshow”);//无参方法

m.setAccessible(true);

o = m.invoke(c.newInstance());

// 静态方法 的调用

m = c.getMethod(“staticshow”);

m.invoke(null);//staticshow为静态方法,不需创建对象,所以这里会是null

}

}

打印

张三,您好!

privateshow

staticshow

文章来源:智云一二三科技

文章标题:反射java调用方法_java 使用反射调用方法

文章地址:https://www.zhihuclub.com/184031.shtml

关于作者: 智云科技

热门文章

网站地图