Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述:

  • Java反射主要涉及的类如Class, Method, Filed,等,他们都在java.lang.lang包下

  • 通过反射可以动态的实现一个接口,形成一个新的类,并可以用这个类创建对象,调用对象方法

  • 通过反射,可以突破Java语言提供的对象成员、类成员的保护机制,访问一般方式不能访问的成员

  • 反射的本质就是从字节码中查找,动态获取类的整容结构,包括属性,构造器,动态调用对象的方法,而不是修剪类

  • Java的反射机制会给内存带来额外的开销。例如对永生堆的要求比不通过反射要求的更多

  • 反射带来的效率问题主要是动态解析类,JVM没法对反射代码优化