每个Method中的对象都对应于特定的基本方法。 获取Method对象后,程序可以使用Method中的invoke方法执行基本方法。
objectinvoke(objectobj,Object . args ) :obj表示调用基本方法的对象,后面的args表示传递的实际参数。
如果基本方法是静态的,则可以忽略指定的obj参数。 此参数可以为null。 想想为什么。
如果基本方法所需的参数数为0,则提供的args数组的长度可以为0或null。
不写、null或new Object[]{}
如果基本方法返回数组类型,则invoke方法返回基本方法的返回类型,而不是基本方法的值
打包June reflect 624;
import java.lang.reflect.Method;
class Dept{
公共字符串显示(字符串名称)//以反射方式调用常规方法
return name ',你好!' ;
}
通过private void privateshow () /反射实现对私有化方法的调用
system.out.println(privateshow );
}
公共静态语音静态(
system.out.println(staticshow );
}
}
公共类invoke demo9{
publicstaticvoidmain (字符串[ ] args ) throws Exception { )。
/*传统方式:
String name=new Dept ().show ) ' ykdwx );
system.out.println(name; */
//*
* methodgetmethod (字符串名称,类. parameter types ) ) ) ) )。
返回反映此类对象所表示的类或接口的指定公共成员方法的Method对象。
name-方法名称
参数类型-参数列表
*/
//想通过反射调用Dept的方法
Class c=Dept.class;
methodm=c.getmethod(show,String.class );
objecto=m.invoke(c.newinstance )、' ykdwx );
系统. out.println (o;
//私有化的方法
m=c.getdeclaredmethod (privateshow ); //无参与方法
m .设置可访问(true;
o=m.invoke(c.newinstance ) );
//调用静态方法
m=c.getmethod(staticshow );
m.invoke(null ); //staticshow是静态方法,在此为空,因为不需要创建对象
}
}
打印
ykdwx,你好!
隐私保护
staticshow