反射(Reflection)是Java的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性

通过反射,我们可以运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而Java反射机制可以动态的创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。
反射的核心是JVM在运行时才动态加载类或调用方法、访问属性。它不需要实现知道运行对象

反射的主要用途

反射最重要的用途就是开发各种通用框架
它是各种容器实现的核心。

注意事项

由于反射会额外消耗一定的系统资源,因此如果不需要动态创建一个对象,那么就不需要用反射
另外,反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题