反射

如何使用一个Java类?

● 已知一个类的类名、以及、类中的方法属性、构造方法等

● 使用new关键字创建对象

● 使用对象调用方法或属性

Java反射的概念

• JAVA反射机制是在运行状态中,对于任意一个类,都能够知

道这个类的所有属性和方法;对于任意一个对象,都能够调用

它的任意一个方法和属性;这种动态获取信息以及动态调用对

象的方法的功能称为java语言的反射机制。

Java反射的作用

• 动态获取类的信息,进一步实现需要的功能。

Java反射相关的类主要包括

• Class 类型 (表示一个正在运行中的JAVA类或接口)

• Constructor 构造方法

• Method 方法

• Field 属性

• 除了Class外,其他类都位于java.lang.reflect包中

Class类

● 一旦class文件被加载到内存,就会为其创建一个Class对象。任

何类被使用时都会创建一个Class对象。

● Class类是Java反射机制的基础,通过Class类,可以得到一个类

的基本信息。

获得Class的三种方法

要使用Class类的方法,必须先获得Class类的实例,获得Class类

实例的常用方法有如下三个

● Object类中的getClass方法:适用于通过对象获得Class实例的情

● 任何类都继承到了getClass方法,任意对象可以调用getClass方法获得

Class实例

● 类名.class方式:适用于通过类名获得Class实例的情况

● 任何类名加.class即返回Class实例,例如 Class clazz=String.class;

● Class类的静态方法 forName(String name):适用于通过类型获

得Class实例的情况,尤其类名是变量

● 例如:Class.forName(className);

Constructor类

●Constructor类可以通过getXXX方法获得构造方法的

基本信息,例如:

● getName:返回构造方法的名字

除了获得构造方法的基本信息,还可以创建实例

● newInstance(Object... initargs) :创建实例

如何获得Constructor类实例

●Constructor实例通过Class实例获得,Class类中定义

了如下方法

● Constructor<T> getConstructor(Class... parameterTypes) :通过指定参数类型,返回构造方法实例。

创建对象

con.newInstance(“zhangsan" , 20);

Field类的作用

●Field类将类的属性进行封装,可以获得属性的基本信

息、属性的值,也可以对属性进行赋值

● getName:返回属性的名字

● Set:设置属性值

获得Field实例

●获得Field实例,都是通过Class中的方法实现

● public Field getField(String name)

● 通过指定Field名字,返回Field实例

● 注意Field的访问权限

Method类的作用

● Method类将类中的方法进行封装,可以动态获得方法的信息,

例如

● getName:获得方法名字

● getParameterTypes:获得方法参数类型

● 除了动态获得方法信息外,Method还能动态调用某一个对象的

具体方法

● invoke(Object obj, Object... args) :使用obj调用该方法,参数

为args

获得Method实例

●Method实例都是通过Class类的方法获得

● Method getMethod(String name, Class...

parameterTypes) :通过指定方法名,参数类型,返回一个

Method实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值