gpt4 book ai didi

Java 8 获取类成员的准确顺序

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:36 25 4
gpt4 key购买 nike

由于 java 在排序方法和字段方面出现问题,我想确定它们声明的确切顺序。

由于 Java 6(或更高版本),JVM 通常以随机顺序返回成员,因此我研究了 Javassist、ASM 和 Bcel。 Bcel 不支持 Java 8,Javassist 很痛苦,因为它似乎不重视方法和字段之间的正确顺序(它首先使用字段,然后使用方法,即使字段位于方法之间)。

所以 ASM 似乎是最好的选择,但它只有字符串表示,这是一个痛苦。

有谁知道更好的方法吗?

[更新]

这个想法是使用当前方法的注释来绑定(bind)前一个方法的内容。我为 C/ASM 编写了一个预编译器,它应该是这样的:

public class Test {
public native int add(int a, int b);
@C("return a + b;")

public native int sub(int a, int b); @C({
"int result = a - b;",
"return result;"
})

public native int power2(int a); @ASM({
"mov eax, a",
"shl eax, 1"
})

private boolean eof;
}

正如您所看到的,想法是使用最终字段 eof 将最后一个方法的注释绑定(bind)到它。好吧,看来我将强制使用 eof 字段,并对此使用约定。

[更新2]我刚刚更新了代码以纠正并显示替代格式。

最佳答案

好了,大问题解决了。这两个 API(ASM 和 Javassist)都不支持获取字段和(!)方法的正确顺序,因为 - 嗯 - 类文件格式不支持这一点。它只有一组字段和一组方法。 (https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html)

这扼杀了我关于以特定方式使用注释的想法。

关于Java 8 获取类成员的准确顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29660399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com