首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.reflect和java.lang.invoke有什么不同?

java.lang.reflect和java.lang.invoke有什么不同?
EN

Stack Overflow用户
提问于 2016-01-11 03:28:44
回答 3查看 1K关注 0票数 1

java.lang.reflect和java.lang.invoke有什么不同?

我知道我们俩都会反省,但我不知道有什么不同

在我看来,reflect允许收集所有的方法、字段等,而invoke可以调用没有对象的方法

EN

回答 3

Stack Overflow用户

发布于 2016-01-11 03:34:04

reflect是一个较旧的库,invoke通过MethodHandles工作。

注意:不管名字如何,MethodHandle可以包装一个构造函数或一个字段。

在Java9中,将会有VarHandles,尽管它的名字并不局限于变量,但也可以调用代码。

票数 0
EN

Stack Overflow用户

发布于 2016-01-11 03:35:18

我推荐the documentation。引用第一句话:

Java包包含由

核心类库和虚拟机直接提供的动态语言支持。

另一方面,java.lang.reflect是自省/反思。

票数 0
EN

Stack Overflow用户

发布于 2016-01-11 12:51:02

阅读java文档链接可以帮助您更清楚地理解不同之处。

java.lang.reflect

提供了用于获取有关类和对象的反射信息的类和接口。

反射允许以编程方式访问有关已加载类的字段、方法和构造函数的信息,并允许在安全限制内使用反射的字段、方法和构造函数对其基础副本进行操作。

java.lang.invoke

Java包包含由

核心类库和虚拟机直接提供的动态语言支持。

如Java虚拟机规范中所述,此程序包中的某些类型与虚拟机中的动态语言支持具有特殊关系:

MethodHandle包含签名多态方法,无论它们的类型描述符是什么,都可以链接这些方法。通常,方法链接需要类型描述符的精确匹配。

JVM字节码格式支持MethodHandleMethodType类的直接常量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34709845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档