[size=medium]今天看java.lang.reflect包中的信息时,想到了这几个得到Class对象的方法的区别
类名.class;// 该方法最为安全可靠,程序性能更高。
对象明.getClass();
Class.forName("className");// 可能抛出ClassNotFoundException异常[/size]
其中的区别:
Class.class和getClass()是在编译期间加载而forName()是在运行期间加载
Class.class只是在编译时用来存放类的相关信息,并没有实例化对象而getClass()既实例化了对象,有存放了类信息
类名.class;// 该方法最为安全可靠,程序性能更高。
对象明.getClass();
Class.forName("className");// 可能抛出ClassNotFoundException异常[/size]
其中的区别:
Class.class和getClass()是在编译期间加载而forName()是在运行期间加载
Class.class只是在编译时用来存放类的相关信息,并没有实例化对象而getClass()既实例化了对象,有存放了类信息
package test;
import bean.TestBean;
public class TestGetClass {
/**
* http://www.importnew.com/1796.html
*/
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
TestBean tb = new TestBean();
// 第一种
System.out.println(tb.getClass());
// 第二种
System.out.println(Class.forName("bean.TestBean"));
// 第三种
System.out.println(TestBean.class);
System.out.println("-------------------");
System.out.println(new TestBean());
System.out.println(TestBean.class.newInstance());
System.out.println("--------------------------");
System.out.println(tb.getClass().newInstance());
System.out.println(tb);
}
}