Java反射最大的好处就是能在运行期间,获得某个类的结构、成员变量,用来实例化。
下列是具体使用场景:假如我们有两个程序员,一个程序员在写程序的时候,需要使用第二个程序员所写的类,但第二个程序员并没完成他所写的类。那么第一个程序员的代码能否通过编译呢?这是不能通过编译的。利用Java反射的机制,就可以让第一个程序员在没有得到第二个程序员所写的类的时候,来完成自身代码的编译。Java的反射机制它知道类的基本结构,这种对Java类结构探知的能力,我们称为Java类的“自审”。大家都用过Jcreator和eclipse。当我们构建出一个对象的时候,去调用该对象的方法和属性的时候。一按点,编译工具就会自动的把该对象能够使用的所有的方法和属性全部都列出来,供用户进行选择。这就是利用了Java反射的原理,是对我们创建对象的探知、自审。
问:
写的很好,但是第二个程序员没写完他的类,第一个程序员怎么知道他要写什么类呢?
答:
双方约定全类名就好了,楼主举这个例子的目的是第一个程序员代码通过编译期而已。
答:
第二程序员代码还没有写,第一个程序员拿不到他写的类的类型,也无法实例化对象,
第一个程序员的代码想通过编译,就需要用反射。
答:
比方说第一个程序员这么写,能够通过编译,
`package com.xgcd.demo.reflection;
public class ReflectDemo5 {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
Class c1 = Class.forName("com.xgcd.demo.reflection.bean.Employee");
Object o = c1.newInstance();
System.out.println(o);
}
}
之后第二个程序员在com.xgcd.demo.reflection.bean这个package下创建Employee就可以了,并不影响第一个程序员接着写代码,就这样。
摘自https://www.cnblogs.com/baxianhua/p/9487067.html