java.lang.reflect和java.lang.invoke有什么不同?
我知道我们俩都会反省,但我不知道有什么不同
在我看来,reflect允许收集所有的方法、字段等,而invoke可以调用没有对象的方法
发布于 2016-01-11 03:34:04
reflect是一个较旧的库,invoke通过MethodHandles工作。
注意:不管名字如何,MethodHandle可以包装一个构造函数或一个字段。
在Java9中,将会有VarHandles,尽管它的名字并不局限于变量,但也可以调用代码。
发布于 2016-01-11 03:35:18
发布于 2016-01-11 12:51:02
阅读java文档链接可以帮助您更清楚地理解不同之处。
提供了用于获取有关类和对象的反射信息的类和接口。
反射允许以编程方式访问有关已加载类的字段、方法和构造函数的信息,并允许在安全限制内使用反射的字段、方法和构造函数对其基础副本进行操作。
Java包包含由
核心类库和虚拟机直接提供的动态语言支持。
如Java虚拟机规范中所述,此程序包中的某些类型与虚拟机中的动态语言支持具有特殊关系:
类MethodHandle包含签名多态方法,无论它们的类型描述符是什么,都可以链接这些方法。通常,方法链接需要类型描述符的精确匹配。
JVM字节码格式支持MethodHandle和MethodType类的直接常量。
https://stackoverflow.com/questions/34709845
复制相似问题