Q:反射有什么用?
A:我们可以动态的选择我们需要的类型。

Q:为什么这样说呢?
A:在我们遇到项目时,我们需要使用另一个类,然而在程序里new的对象是写死的,我们需要修改代码重写 new一个新的 编译才能运行,这样不是很麻烦吗?
我们可以新建一个配置文件,里面记录需要的类包,让main去读这个文件,通过反射获得实例。其实我自己也是懵的,到底有啥用啊
A:能不用就不用…

//获取类对象
    Class stu2 = stu1.getClass();  
    Class stu2 = stu1.class;      
    Class stu2 = Class.forName("fanshe.Student");  
    Student.TYPE;  


//所有"公有的"构造方法
public Constructor[] getConstructors();  
//获取所有的构造方法(包括私有、受保护、默认、公有)  
public Constructor[] getDeclaredConstructors();
//调用
con.newInstance()


//获取所有的"公有字段"
Field[] getFields();
//获取所有字段  
Field[] getDeclaredFields();
//设置字段
Object obj = stuClass.getConstructor().newInstance();
Field strName = stuClass.getField("name");  
strName.set(obj,"Kivior")


//获取成员公有方法
public Method[] getMethods();
//所有方法
public Method[] getDeclaredMethods();
//调用方法
Object obj = stu1.getConstructor().newInstance();//实例化一个Student对象 
Method m = stu1.getMethod("show", String.class);  
m.invoke(obj, "Show,Kivior");