Supponi di progettare una libreria Java che altre persone possano utilizzare. Si compila la libreria in un JAR che è possibile importare nei propri progetti e utilizzare.
Inutile dire che si intende utilizzare la libreria in determinati modi e attraverso determinate interfacce. Ad esempio, potresti creare diverse classi di Facade per controllare la libreria e nella documentazione indicare come deve essere usata la libreria, quale sia la classe e il metodo usati, ecc.
Ma c'è un modo per nascondere completamente una certa classe all'utente? In ogni libreria ci sono alcune classi (suppongo solitamente la maggior parte delle classi), che sono usate internamente dalla libreria e non dovrebbero essere usate direttamente dal codice usando la libreria.
C'è un modo per me di affermare "questa classe è per uso interno di questa libreria all'interno di questo JAR o all'interno di questo pacchetto, non può essere usata al di fuori dei confini di questa libreria"? È tecnicamente possibile? O dovrei semplicemente dichiarare nei documenti che certe librerie non dovrebbero essere usate dall'utente, e il gioco è fatto?