查看类信息(反射的基础)

当无法确定调用哪一个子类(子类名作为参数传递)的某一个方法时,也许会用到反射。反射可以获取到类的所有信息。

反射的思路:

通过类加载器加载类,类被加载后就会创建一个该类的类对象在内存中,获取到这个类对象就可以调用方法获得类信息了(类对象与实例对象不一样)。

获取类对象的方法有三种:

1.Class.forName("完整包名"):Class.forName(“pacage.A”)。需要捕捉ClassNotFoundException异常

2.调用某给类的class属性:Person.class.  建议用这个方法,可以在编译阶段判断是否有这个类,安全且高效。

3.调用类实例对象的getClass()方法获取Class对象。

 

api:

获取构造器:Constructor<T> getConstructor(Class<?>...):返回此Class对象缩表示的类的指定的public构造器

                     Constructor<?>[] getConstructors():返回Class对象表示类的所有public构造器

                     Constructor<T> getDeclaredConstructor(Class<?>...):返回此Class对象缩表示的类的指定的构造器,与访问级别无关

                     Constructor<?>[] getDeclaredConstructors():返回Class对象表示类的所有构造器,与访问级别无关

获取方法:Method getMethod(String name,Class<?>...),返回public方法

                 Method[] getMethods(),返回所有public方法

                 Method getDeclaredMethod(String name,Class<?>...) 返回指定方法,与方法的访问级别无关

                 Method getDeclaredMethods() 返回所有方法,与方法的访问级别无关

解释:这些方法的参数后面有一个Class<?>...  是因为有重载的方法,要加上参数的类对象,如String.class

获取属性:Field getField(String name):获取对应的public属性

                  Field getFields():获取所有public属性

                  Field getDeclaredField(String name):获取对应的属性,与级别无关

                  Field getDeclaredFields():获取所有属性,与级别无关

还有获取包名,构造器,注解等等方法。

Constructor Method Field 方法均是反射包的类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值