Perché i pacchetti non sono accessibili. Che cosa significa "accessibile" nel nome AccessibleObject significa che ha una specifica di accesso e un ambito associato . Ad esempio, un oggetto potrebbe avere public di accesso (a questo punto il suo ambito è irrilevante), o private accesso da class Foobar , o accesso a pacchetto locale (predefinito) nel pacchetto com.example.foo . AccessibleObject fornisce anche l'accesso alle annotazioni dichiarate su un elemento di origine Java, ma questo non è il suo scopo principale.
I pacchetti non hanno questo. Tutti i pacchetti in Java sono pubblici e sono accessibili a livello globale. (Credo che Java 9 introduca un sistema che cambierà questo in qualche modo, ma credo che introduca solo un nuovo sistema di classificazione ortogonale che non inciderà su AccessibleObject e pacchetti).
I pacchetti possono avere annotazioni, ma l'accesso a questi è fornito attraverso mezzi alternativi, quindi non è necessario estendere AccessibleObject per fornire l'API pertinente per questo.
Ciò significa che i metodi in AccessibleObject (principalmente isAccessible() e setAccessible(boolean) ) sono irrilevanti per i pacchetti, perché i pacchetti sono sempre accessibili e questo non è qualcosa che può essere impostato. Pertanto, estendere questo tipo non sarebbe appropriato per loro.