128得票11回答
读取和显示Java .class版本的工具

你们中是否有人知道一种工具,可以搜索.class文件并显示它们的编译版本? 我知道你可以在十六进制编辑器中逐个查看它们,但我有很多要检查的class文件(我的巨型应用程序中有某些东西以某种原因编译为Java6)。

84得票3回答
Kotlin字节码 - 如何在IntelliJ IDEA中分析?

我想查看编译字节码,以便了解其底层运行方式。我正在使用IntelliJ IDEA 15,但找不到查看字节码的方法。我错过了什么?

42得票3回答
动态Java字节码操作框架比较

有一些针对动态字节码生成、操作和编织的框架,比如BCEL、CGLIB、javassist、ASM和MPS。我想学习它们,但由于时间有限,我希望看到一种比较图表,以便了解它们之间的优缺点,并解释其原因。 在这里(指Stack Overflow),我发现很多类似的问题,答案通常是“你可以使用cg...

25得票2回答
空或空Lambda作为默认值

哪个解决方案更好?使用可空lambda还是将空lambda作为默认参数传递?Kotlin是否会优化空的lambda,或者创建一个什么也不做的新实例? ``` class Test1(val action: () -> Unit = {}) ``` 不幸的是,我不理解生成的字节码。 让我们来...

16得票1回答
IntelliJIDEA中的Java字节码反编译器(针对Scala)

我正在使用Intellij IDEA Ultimate Edition。浏览由Java源代码编译的.class文件很容易:我只需双击.class文件,IDEA就会对其进行反编译。 然而,对于从Scala源代码编译的.class文件,它不起作用。看起来IDEA只是引用了scala源文件。 我...

14得票1回答
Kotlin 内联扩展属性

我知道 inline 关键字的意思是避免调用函数时产生开销。但我不确定将一个扩展属性标记为 inline 会起什么作用? 假设我们有两个扩展属性,分别命名为 foo 和另一个标记为 inline 的属性 barval Any.foo : Long get() = Date().tim...

13得票3回答
java.lang.VerifyError: 栈映射与异常处理程序处的栈映射不匹配

面对 JVM 加载字节码时以下代码段所显示的 java.lang.VerifyError。try{ ----- } catch (NumberFormatException|CalculationException e) { } 在这里,CalculationException是扩展jav...

11得票3回答
Java字节码中的if条件取反

考虑一个简单的例子private static String isPositive(int val) { if (val > 0) { return "yes"; } else { return "no"; } } 这里很简单:如果...

10得票1回答
JVM规范中JSR/RET的状态

有些JVM规范的部分暗示了操作JSR (跳转子例程), JSR_W (宽跳转子例程)和RET (从子例程返回)只能在50.0(JDK 1.6)之前的类文件版本中使用: 3.13 编译finally语句块 (本节假设编译器生成的类文件版本号为50.0或以下,因此可以使用jsr指令。参见§4....

9得票1回答
如何使用ByteBuddy创建动态代理

在Java中,使用InvocationHandler的实现可以创建动态代理。尽管JVM进行了优化,但是使用反射调用方法总会有一些开销。 为了解决这个问题,我尝试使用ByteBuddy在运行时创建代理类,但是文档在这方面看起来不够清晰。 我该如何创建一个MethodCallProxy以将方法...