当前位置: 首页 > 面试题库 >

字节码功能在Java语言中不可用

谷梁鸣
2023-03-14
问题内容

当前(Java 6)中是否有您可以用Java字节码执行的,您无法在Java语言中执行的操作?

我知道两者都已经完成了图灵,所以将“可以做”理解为“可以更快/更好地做事,或者只是以不同的方式做”。

我正在考虑invokedynamic无法使用Java生成额外的字节码,例如,除非特定的字节码用于将来的版本。


问题答案:

据我所知,Java 6支持的字节码中没有任何主要功能,这些功能也无法从Java源代码访问。这样做的主要原因显然是Java字节码在设计时就考虑了Java语言。

但是,有些功能不是现代Java编译器提供的:

  • ACC_SUPER标志:

这是可以在类上设置的标志,并指定如何invokespecial为该类处理字节码的特定特殊情况。它是由所有现代Java编译器(如果我没有记错的话,其中“现代”>
= Java 1.1)设置的,只有古老的Javahtml" target="_blank">编译器会生成未设置此文件的类文件。该标志仅出于向后兼容的原因而存在。请注意,从Java
7u51开始,由于安全原因,ACC_SUPER被完全忽略。

  • jsr/ ret字节码。

这些字节码用于实现子例程(主要用于实现finally块)。从Java
6开始不再生产
它们。之所以会弃用它们,是因为它们使静态验证复杂化了很多,却没有太大的收获(即,几乎总是可以用正常的跳转重新实现使用的代码,而开销却很小)。

  • 一个类中有两个方法,只是返回类型不同。

Java语言规范不允许在同一个类中的两个方法时,它们之间的区别
在他们的返回类型(即相同的名字,相同的参数列表,…)。但是,JVM规范没有这样的限制,因此类文件 可以
包含两个这样的方法,只是没有办法使用普通的Java编译器来生成这样的类文件。



 类似资料:
  • 问题内容: 只是想知道是否有人尝试过将新的Java 7语言功能用于Android?我知道Android会读取Java吐出的字节码并将其转换为dex。所以我想我的问题是它可以理解Java 7的字节码吗? 问题答案: 如果你使用的是Android Studio,则应自动启用Java 7 语言,而无需任何补丁。尝试资源要求API级别为19+,并且缺少NIO 2.0。 如果你无法使用Java 7功能,请参

  • 问题内容: 我对javascript中的“反跳”功能感兴趣,写在这里: 不幸的是,代码的解释不够清楚,我无法理解。谁能帮我弄清楚它是如何工作的(我在下面留下了我的评论)。简而言之,我真的不明白这是如何工作的 编辑:复制的代码片段以前在错误的位置。 问题答案: 问题中的代码与链接中的代码略有不同。在链接中,在创建新的timout之前要进行检查。之后拥有它会导致即时模式从不触发。我已经更新了答案,以便

  • 类型的函数 (Types of Functions) 功能可以以多种方式分类。 在这里,我们根据它们采用的参数的数量和类型以及结果类型对它们进行了分类。 功能可以, Atomic - 参数是原子的并产生原子结果 Aggregate - 列表中的原子 Uniform (list from list) - 扩展原子的概念,因为它们适用于列表。 参数列表的计数等于结果列表的计数。 Other - 如果该

  • 问题内容: 什么可以帮助我帮助用Java编写高度紧凑的(最小字节数)程序。 我可能正在看: 告诉我一个类或一个方法生成多少字节代码的工具。 可视化字节码。 该工具可以告诉我哪些区域需要字节码计数或cpu周期方面的优化。 字节码图表还将有助于指示Java中存在哪些字节码及其各种属性。 有没有现成的工具可以帮助我实现这一目标? 问题答案: Eclipse有一个Byte Code Outline插件,

  • 我想比较sha256的输出。Sum256(),它是带[]字节的[32]字节。 我得到一个错误不匹配类型[32]字节和[]字节。我无法将[]字节转换为[32]字节。 有办法做到这一点吗?

  • 本文向大家介绍易语言调用百度语音平台实现文字转换语音功能的代码,包括了易语言调用百度语音平台实现文字转换语音功能的代码的使用技巧和注意事项,需要的朋友参考一下 调用百度语音平台实现文字转换语音功能 此功能需要加载精易模块5.6 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对呐喊教程的支持。如果你想了解更多相关内容请查看下面相关链