Mi chiedo se sarebbe possibile generare una classe, tramite un processore di annotazioni, che sarebbe una classe interna di una classe da compilare.È possibile generare una classe interna di una classe da compilare con un processore di annotazioni?
Ad esempio, durante la compilazione della classe A
, generare la classe A$Foo
. Mi chiedo se ci sia un trucco che potrebbe essere usato o meno. Ho avuto la sensazione che potrebbe essere possibile generare una fonte che verrà compilata nello stesso codice byte di una classe interna. E, in fase di compilazione/runtime, la JVM la prenderebbe per una classe interna e consentirebbe l'accesso ai campi privati della classe esterna.
L'idea alla base di questa domanda, che non è una questione obliqua, anche se può sembrare più o meno tecnica, è quella di essere in grado di utilizzare il modificatore di visibilità privato per campi annotati come Dagger, ButterKnife, ecc. per rilevare più facilmente i campi non utilizzati, mentre la protezione privata dei pacchetti li nasconde.
Oppure c'è qualche soluzione, un modo per ottenere il meglio da entrambe le parole?
No. Non è possibile modificare i file sorgente esistenti, basta crearne di nuovi. Ma nomino sempre classi generate secondo questo schema, ad esempio 'SomeInterface $ Impl' per indicare che questa classe generata appartiene a' SomeInterface'. –
Ma so esattamente cosa intendi, gioco molto con l'elaborazione delle annotazioni e lo uso molto nelle mie librerie, e vorrei solo che fosse possibile ... Normalmente tendo a generare classi di implementazione finali private e poi a generare un public factory class che crea istanze di tali interfacce con le classi di implementazione private. È possibile chiamare questa soluzione alternativa. –