如何使用一个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实例