модификаторы полей являются битовые ОШ действительных модификаторов. Каждый из допустимых модификаторов (некоторые из которых показаны в ответе @ gustf) представляют собой целые числа с установленными одиночными битами.
Таким образом, 0x3
будет OR двух модификаторов с числовыми значениями 0x2
и 0x1
.
0x2
модификатор средства ACC_PRIVATE
. Модификатор 0x1
ACC_PUBLIC
.
Это противоречие - вы не можете иметь что-то публичное и личное - так что 0x3
является недопустимой комбинацией модификаторов.
Это поведение описано в Section 4.5 of the JVM spec:
Поле классов может установить любого из флагов в таблице 4.4. Тем не менее, определенное поле класса может иметь не более одного из его ACC_PRIVATE, ACC_PROTECTED и ACC_PUBLIC флагов набора ...
Как например, установка ACC_PRIVATE
и ACC_PUBLIC
явно запрещенные спецификациями.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx – Gendarme