概述
最新的JEP来自Valhalla项目团队,其目标是提供一个探索和孵化高级Java VM和语言功能候选者的场所。 它们的两个既定功能是“ 值对象”和“ 原始类型上的泛型” ,但它们还列出了“其他相关主题”,隐藏类必须属于这些主题。 因此,现在让我们仔细研究一下JEP对编程语言的意义。
JEP 371:隐藏的类
使用框架的Java开发人员知道这一点:在运行时动态创建的某些类比实际所需的可见性或寿命更长。 这是因为用于创建类的API, ClassLoader::defineClass
和Lookup::defineClass
,对于区分该类的字节码是在运行时动态创建还是在编译时静态创建的,没有区别。 由于默认情况下将该类定义为“可见”,因此将相应地使用它。
还请参见:
适用于Java和JavaScript用户
添加“隐藏”类可以涵盖某些用例,而其他类则无法如此轻松地调用这些用例。 在JEP 371:隐藏类中 ,提到了一些此类可能的用例作为示例。 例如, java.lang.reflect.Proxy
可以定义充当代理类的隐藏类。 顾名思义,这些将实现代理接口。 隐藏类也可以与java.lang.invoke-StringConcatFactory
结合使用,以包含用于常量连接的方法。 在Java中使用JavaScript时,相应的引擎可以创建隐藏类,其中包含从JavaScript应用程序转换而来的字节码。
弃用
该JEP的目的不是以其他任何方式更改Java编程语言。 此外,提案的目标绝对不是支持sun.misc.Unsafe::defineAnonymousClass
的全部功能。 相反,这可能对API来说是致命的:JEP所有者Mandy Chung建议将其标记为“不赞成使用”,并在以后的Java更新中将其删除。
有关JEP 371的更多信息以及有关隐藏类如何工作的详细信息,请参见JEP描述 。
翻译自: https://jaxenter.com/jep-371-hidden-classes-java-167829.html
最后
以上就是发嗲菠萝为你收集整理的JEP 371:Java中的隐藏类的全部内容,希望文章能够帮你解决JEP 371:Java中的隐藏类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复