package cn.yangtao.enumdemo;
import java.lang.reflect.Constructor;
/*
* Class类中的方法用来获得类本身的一些属性
* 比如获得类名、获得所在包
* Class 类没有构造方法
* 字节码:java源程序---》class字节码--》加载到JVM
* 每一个字节码就是每一个Class 的实例化对象
* Class cla=Date.class//获得对象的字节码
* getClass()
* Class.forName("包。类")返回字节码
* 1、JVM中存在该字节码则直接返回
* 2、JVM中不存该字节码则先加载进来,下次再调用时不必再加载
* 八个基本对象对应着八个Class
* 再加上一个Void
* 数组的类型的Class对象
* 总之是在源程序中出现的类型都有CLASS实例对象
* * 反射就是把一个类中的每一个成分解析为另一个类的对象
*/
public class ReflectDemo {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
String str1="abc";
Class obj1=str1.getClass();
Class obj2=String.class;
Class obj3=Class.forName("java.lang.String");
System.out.println(obj1==obj2);
System.out.println(obj1.isPrimitive());
System.out.println(int.class.isPrimitive());
Constructor<String> con=String.class.getConstructor(StringBuffer.class);
String str2=con.newInstance(new StringBuffer("abc"));
System.out.println(str2.charAt(2));
}
}