JAVA高级(9)—— 反射

2018-01-07  本文已影响6人  AndroidMaster

反射的基石-Class类

三种得到字节码对应的实例对象
a)Class cls1 = Date.class;
b)Date d1 = new Date(); Class cls2 = d1.getClass();
c)Class.forName("java.lang.String"); //主要用这种比较多,参数可以通过配置文件配置。forName的作用:返回字节码。两种方式:若不在内存中,用类加载器加载到内存中;已在内存中,直接返回。

Class类的方法

反射

把Java类中的各种成分映射成相应的Java类,如:Method,Constructor,Package,Field等。

Constructor类

Field类

Method

案例:启动java程序的main方法的参数一个字符串数组,即public static void main(String[] args),用反射调用main方法,如何为invoke方法传递参数呢?jdk1.5语法,把整个数组当做一个参数;jdk1.4语法,数组中的每一个元素当做一个参数,若把字符串数组传递给invoke方法,为了兼容jdk1.4,肯定按1.4处理,所以用invoke(null,new String[]{"1","2"})报错
解决:invoke(null,(Object)new String[]{})或invoke(null,new Object[]{new String[]{}})

数组的反射

HashCode

上一篇 下一篇

猜你喜欢

热点阅读