Поскольку Java винт более с точки зрения упорядочения методов и полей, я хочу, чтобы определить точный порядок они объявлены в.Java 8 Получить точный порядок класса Члены
С Java 6 (или около того) в JVM обычно возвращается члены в случайном порядке, я посмотрел на Javassist, ASM и Bcel. Bcel не поддерживает Java 8, Javassist - это боль, потому что кажется, что он не оценивает правильный порядок между методами и полями (сначала он использует поля, затем методы, даже если поля находятся между методами).
Так ASM швы, чтобы быть лучшим выбором, но он имеет только строковое представление, которое является болью.
Кто-нибудь знает лучший способ?
[Update]
Идея заключается в том, чтобы использовать аннотации для текущего метода связывания контента для первого способа. Я пишу препроцессор для 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, чтобы связать аннотацию последнего метода к нему. Ну, это швы, я сделаю поле eof обязательным и использую соглашение об этом.
[update2] Я только что обновил код, чтобы исправить, а также показать альтернативное форматирование.
Зачем вы хотите это сделать? В зависимости от заказа кажется опасным. – Necreaux
Это то, что вы хотите? http://stackoverflow.com/questions/2126714/java-get-all-variable-names-in-a-class – Shar1er80
Это звучит как [проблема XY] (http://meta.stackexchange.com/questions/66377/что-это-The-ху-проблема). Не могли бы вы рассказать нам свои общие цели? – christopher