Java数据库开发与实战运用---反射

反射的概述

java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能成为java语言的反射机制。

java反射机制的作用

是用来编写一些通用性较高的代码或者框架的时候使用

Class类

java中java.lang.Class类用于表示一个类的字节码(.class)文件

如何得到某个class文件对应的Class对象

已知类和对象的情况下

  • 类名.class
  • 对象.getClass()-----Object类提供

未知类和对象的情况下

  • Class.forName("包名.类名")

Constructor类

Constructor类的实例对象代表类的一个构造方法

得到某个类所有的构造方法

Constructor [] constructors = Class.forName("java.lang.String").getConstructors();

得到指定的构造方法并调用

Constructor constructor = Class.forName("java.lang.String").getConstructor(String.class);

String str = (String)constructor.newIanstance("abc");

Class类的newInstance()方法来调用类的默认构造方法

String obj = (String)Class.forName("java.lang.String").newInstance();

Field类

  • Field类代表某个类中的一个成员变量,并提供动态的访问权限
  • Field对象的获得
  1. 得到所有的成员变量
Field[] fields = c.getFields();//取得所有public属性(包括父类继承)

Field[] fields = c.getDeclaredFields();//取得所有声明的属性

得到指定的成员变量

Field name=c.getField("name");

Field name= c.getDeclaredField("name");

设置变量是否可以访问

  • field.setAccessible(boolean);

Field变量值的读取,设置

  • field.get(obj);
  • field.set(obj,value);

Method类

Method类代表某个类中的一个成员方法

method对象的获得

获得所有方法

  • getDeclaredMethods()
  • getMethods()

获得指定的方法

  • getDeclaredMethod(String name,Class<?>...parameterTypes)
  • getMethod(String name,Class<?>...parametrTypes)

通过反射执行方法

  • invoke(Object obj,Object...args)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章