反射5

反射的概念

在java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;

对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象

方法的功能称为Java语言的反射机制

运行时生成对象实例

运行期间调用方法

运行时更改属性

可以实现的功能

a.在运行时判断任意一个对象所属的类

b.在运行时构造任意一个类的对象

c.在运行时判断任意一个类所具有的方法和属性

d.在运行时调用任意一个对象的方法

e.生成动态代理


Java反射应用场合

java程序中许多对象在运行时都会出现两种类型:编译时类型和运行时类型

编译时类型由声明该对象时使用的类型决定,运行时的类型由实际赋给该对象的类型决定


Person p = new Student();


Class 类 反射的核心类获取类的属性 方法等内容信息

Field类 表示类的属性,可以获取和设置类中属性的值

Method类 表示类的方法,它可以用来获取类中方法的信息,或者执行方法。

Constructor类 表示类的构造方法

java程序中获得Class对象通常有如下三种方式:

调用某个对象的getClass()方法

Person p = new Person();

Class cla = p.getClass();

调用某个类的class属性来获取该类对应的class对象

Class cla = Person.class;

使用Class类的forName()静态方法

Class cla = Class.forName("com.pb.test");


Constructor getConstructor(Class[] params)

返回此Class对象所表示的类的指定的public构造方法,params参数是按声明顺序标识该方法参数类型

的Class对象的一个数组。构造方法的参数类型与params所指定的参数类型所匹配


Constructor[] getConstructors() 返回此Class对象所表示的类的所有的public构造方法

Constructor getDeclaredConstructor(Class[] params) 返回此Class对象所表示的类的指定构造方法,

与构造方法的访问级别无关

Constructor getDeclaredConstructors() 返回此Class对象所表示的类的全部方法,与方法的

访问级别无关


Method getMethod(String name,Class[] params);

返回此Class对象所表示的类的指定的public方法,name参数用于指定方法名称,params参数是

按声明顺序标识该方法参数类型的Class对象的一个数组 c.getMethod("info",String.class);

Method[] getMethods();

返回此Class对象所表示的类的所有的public方法

Method getDeclaredMethod(String name,Class[] params);

返回此Class对象所表示的类的指定的方法,与方法的访问级别无关

Method[]  getDeclaredMethods();

返回此Class对象所表示的类的全部方法,与方法的访问级别无关

Field getField(String name);

返回此Class对象所表示的类的指定的public属性,name参数用于指定属性名称

Field[] getFields();

返回此Class对象所表示的类的所有public属性

Field getDeclaredField(String name)

返回此Class对象所表示的类的指定属性,与属性的访问级别无关

Field[] getDeclaredFields()

返回此Class对象所表示的类的全部属性,与属性的访问级别无关


访问Class对应的类所包含的注释

<A extends Annotation>A getAnnotation(Class<A> annotationClass)

试图获取该Class对象所表示类上指定类型的注释;如果该类型的注释不存在则返回null.其中

annotationClass参数对应于注释类型的Class对象

Annotation[] getAnnotations();返回此元素上存在的所有注释

Annotation[] getDeclaredAnnotations();返回直接存在于此元素上的所有注释

访问Class对应的类所包含的内部类

Class[] getDeclaredClasses();

返回该Class对象所对应类里包含的全部内部类

访问Class对应的类所在的外部类

Class getDeclaringClass();

返回该Class对象所在的外部类


int getModifiers(); 返回此类或接口的所有修饰符

Class[] getInterfaces(); 返回该Class对象对应类所实现的全部接口

package getPackage(); 获取此类的包

String getName(); 以字符串形式返回此Class对象所表示的类的名称

String getSimpleName();以字符串形式返回此Class对象所表示的类的简称

Class.getSuperclass();返回该Class所表示的类的超类对应的Class对象















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值