反射

来源:互联网 发布:sql存储过程怎么写 编辑:程序博客网 时间:2024/06/07 05:35

反射

反射就是把一个java类中的每一个成分解析成一个个java类。

一个java类用一个Class类的对象来表示,一个类的组成部分:成员变量,方法,构造方法等信息用一个个的类来表示。这个类的Class需要提供一系列的方法来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息使用类的实例对象来表示,他们是Field,Method,Contructor,Package等。

一个class中的每个成员都可以用相应的API反射类的对象来表示。

当我们定义一个对象Person p= new Person(),java就从把person的字节码加载到内存中,然后用这个字节码产生对象。

每用到一个新类,就会加载一个新的字节码,每个字节码就是Class的实例对象。

对于Class对象,不存在可供调用的构造函数。

得到一个类的Class对象的方法:

  1. Person.class
  2. p1.getClass()
  3. Class.forName(“java.lang.String”).其中当jvm中没有这个加载这个类的时候,只能用3来获得这个类的Class。方法3最常见。

例子

使用反射,在字符串String str上调用str.charAt(1)方法
String str = “nuist”;
Method methodCharAt = String.class.getMethod(“charAt”, int.class);
char target = (char)methodCharAt.invoke(str,1);
System.out.println(target);

1 0
原创粉丝点击