Java反射机制

1、得到Class对象的三种方式(每个类被加载后,系统都会为之生成一个代表该类的Class对象,通过该Class对象就可以访到是JVM中的这个类了。):

  |--Class.forName(String class_name)  -- e.g.:Class t = Class.forName("java.lang.Thread")

  |--调用类的"class"属性返回该类所对应的Class对象。

  |--调用类的getClass()方法。该方法是java.lang.Object类的方法,所以所有的类都具有这个方法。

  比较

    |--第一种和第二种都可以直接根据类来得到相应的Class对象,第二种更安全,因为在编译时就可以判断该类是不是存在了,而且不用调方法。

    |--当所给的类只是一个字符串是,就只能用第一种了,Class.forName(String str).

2、使用反射生成对象:

  |--使用Class对象的"newInstance()"方法来生成对象,这种方式要求该类必须有无参的构造方法(Servlet容器在初始化Servlet时就是调用Servlet的无参构造方    法,所以,我们写的Servlet中必须要有无参的构造方法。

  |--先通过Class对象得到相应的Constructor对象,再调用Constructor对象的newInstance()方法来创建基于指定构造器的对象。

原文地址:https://www.cnblogs.com/one-cool/p/5021690.html