Class--->代表一类什么样的事物Person p1 = new Person();Person p2 = new Person();反射获取类信息的形式1.Class cls1 = Date.class;//获取字节码1Class cls2 = Person.class;//获取字节码22.p1.getClass();3.Class.forName("java.lang.String");问Class.forName("");的作用?返回字节码,1)如果类加载器已经被加载了,直接从JVM中读取信息 2)如果还未被加载,那么先加载到JVM中public class ReflectTest { public static void main(String[] args) throws ClassNotFoundException { String str1 = "abc"; Class cls1 = str1.getClass(); Class cls2 = String.class; Class cls3 = Class.forName("java.lang.String"); System.out.println(cls1==cls2);// true 说明加载的是同一份字节码 System.out.println(cls1==cls3);// true System.out.println(cls1.isPrimitive()); //false 是否是一个基本的字节类型 System.out.println(int.class.isPrimitive());// true 是一个基本的字节类型 System.out.println(int.class == Integer.class); //false System.out.println(int.class == Integer.TYPE);//true Integer.TYPE代表了Integer基本类型的字节码 System.out.println(int[].class.isPrimitive());//false System.out.println(int[].class.isArray());//true 判断这个基本类型是不是数组 }} 9个预定义Class实例对象 参看Class.isPrimitive方法的帮助 Integer.TYPE代表了Integer基本类型的字节码数组类型的Class实例对象 Class.isArray() 只要在源程序中出现的类型,都有各自的Class实例对象,例如:int[] void ... Constructor类代表某个类中的一个构造方法 得到某个类所有的构造方法 Constructor[] constructors = Class.forName("java.lang.String").getConstructors(); 得到某一个构造方法 Constructor constructor=Class.forName("java.lang.String").getConstructor(StringBuffer.class); 创建实例对象 通常方式:String str = new String(new StringBuffer("abc")); 反射方式:String str = constructor.newInstance(new StringBuffer("abc")); Class.newInstance()方法: 例子:String obj = Class.forName("java.lang.String").newInstance();该方法内部先得到默认的构造方法,然后用构造方法创建实例对象