Ответ 1
В главе Binary Compatibility of the Java Language Specification указано, что переупорядочение элементов в файлах классов разрешено:
[...] вот список некоторых важных двоичных совместимых изменений, которые поддерживает язык программирования Java:
[...]
Переупорядочение полей, методов или конструкторов в объявлении существующего типа.
[...]
Переупорядочение списка прямых суперинтерфейсов класса или интерфейса.
Это означает, что порядок, в котором они отображаются в файле .class, не определяется спецификациями. Если вы хотите положиться на это, вам нужно либо (1) знать, что ваша конкретная реализация использует тот же порядок, что и порядок определения (тестирование, как вы это сделали, является хорошей идеей, но ничего не гарантирует), или (2) изменить порядок самостоятельно.