学习笔记 | JAVA的反射(二)

2018-09-09  本文已影响0人  发光吧

利用反射机制动态加载类 、获取类的方法、获取类的属性

编译时刻加载类是静态加载类,运行时加载类是动态加载类

正常创建对象 静态:

A a = new A();

利用反射创建对象 动态:

A类实现X接口

Class c1 = Class.forName(“xxx.A”);

X a = (X) c1.newInstence();

Class c = Class.forName(“xxx.xxx”);

c.getName();//类名称(基本的数据类型 void关键字都存在类类型 无包名)

c.getNAme();//不带包名的类名称

java.lang.reflect.Method //方法对象

Method[] ms = c.getMethods();// 获取的是所有public的函数,包括从父类继承的

Method[] ms = c.getDeclaredMethods();//获取该类所有自己声明的方法 不问访问权限

ms[i].getName();//获取方法名

Class returntype = ms[i].getReturnType();//获取返回值类型的类类型

Class[] paramTypes = ms[i].getParameterTypes();//获取参数列表类型的类类型

java.lang.reflect.Field //成员变量对象

Field[] fs = c.getFields(); //所有public的成员变量

c.getDeclaredFields();//获取所有自己声明的成员变量

Class fieldType = fs[i].getType();//成员变量类型的类类型,通过它可以获取其类型相关信息

java.lang.reflect.Constructor //构造函数的对象

Constructor[] cs = c.getConstrunctors();//获取public构造方法

c.getDeclaredConstructors();//获取自己声明的全部构造方法

获取Class的对象,即类类型后,就可以获取很多信息了,比如说父类,接口等,参考API。

上一篇下一篇

猜你喜欢

热点阅读