一、class 类
(1)Object.getClass():如果一个类的对象可用,则最简单的获得Class的方法是使用Object.getClass()。当然,这种方式只对引用类型有用。
Class c1 = new Date().getClass();// 使用getClass()方式获得Class对象
(2).class语法:如果类型可用但没有对象,则可以在类型后加上“.class”来获得Class对象。这也是使原始类型获得Class对象的最简单的方式。
Class c2 = boolean.class;// 使用.class语法获得Class对象
(3) Class.forName():如果知道类的全名,则可以使用静态方法Class.forName()来获得Class对象。它不能用在原始类型上,但是可以用在原始类型数组上。
Class c3 = Class.forName("java.lang.String");// 使用Class.forName()获得Class对象
(4) 包装类的TYPE域:每个原始类型和void都有包装类。利用其TYPE域就可以获得Class对象。
Class c4 = Double.TYPE;// 使用包装类获得Class对象
(5)以Class为返回值的方法:请参考反射API
Class c5 = ClassLoader.getSystemClassLoader().loadClass("com.mvc.practise.Demo");
Class c5 = ClassObjectInitialization.class.getClassLoader().loadClass("com.mvc.practise.Demo");
Class c5 = Thread.currentThread().getContextClassLoader().loadClass("com.mvc.practise.Demo");
二、普通类
1、用new语句创建对象,这是最常见的创建对象的方法。
2、通过工厂方法返回对象,如:String str = String.valueOf(23);
3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object obj = Class.forName("java.lang.Object").newInstance();
4、调用对象的clone()方法。
5、通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。