现在的位置: 首页 > 综合 > 正文

黑马程序员—高新技术_反射(2)

2018年05月23日 ⁄ 综合 ⁄ 共 913字 ⁄ 字号 评论关闭

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

Method类  代表某个类中的一个成员方法
得到类中的某一个方法
Method charAt=
//charAt:方法名    int.class:参数类型
Class.forName("java.lang.String").getMethod("charAt",int.class);
调用方法
通常方式:System.out.println(str.charAt(1));
反射方式:System.out.println(charAt.invoke(str,1));
如果传递给Method对象的invkke()方法的第一个参数为null,说明该方法没有调用对象,是一个静态方法

调用main()方法
被调用的类
class TestArguments
{
public static void main(String []args)
{
for(String arg:args)
System.out.println(arg);
}
}

//静态方式调用main方法
TestArguments.main(new String[]{"111","222","333"});
//反射调用main方法
String startingClassName=args[0];
Method  mainMethod=Class.forName(startingClassName).getMethod("main",String[].class);
mainMethod.invoke(null,new Object[] {new String[]{"111","222","333"}});
//mainMethod.invoke(null, (Object) new String[]{"111","222","333"});

数组的反射
数组类型相同,维度相同,得到的字节码相同
int[]a1=new int [3];
//数组a1中的数据时int型,而不是Object型,所以编译出错
Object[] aObj3=a1;

抱歉!评论已关闭.