In un commento hai scritto "Sì, questo è il punto, so che possono essere chiamati cose diverse ma non voglio che siano".
Ora, qualcuno potrebbe semplicemente dire "questo è impossibile", ma come molte cose nella programmazione, non è in realtà impossibile, è solo un sacco di lavoro.
Se si desidera eseguire questa operazione, è possibile creare un numero personalizzato Java Annotation per la classe e quindi scrivere un Annotation processor e chiamare apt come parte del processo di compilazione.
Come ho detto molto lavoro, ma potrebbe essere utile se si desidera imparare come funzionano le annotazioni.
Scrivere annotazioni è in realtà piuttosto semplice. Funzionano come le normali lezioni. Ad esempio, se si desidera solo per contrassegnare una classe per qualche motivo è possibile creare un vuoto o marcatore annotazione come questo
public @interface Car { }
Poi, nel tuo processore annotazione è possibile verificare che auto ha i metodi privati giusti .
Ho scritto le mie annotazioni, ma le ho verificate in Runtime utilizzando l'API di reflection, piuttosto che al momento della compilazione. Sono in realtà piuttosto facili.
fonte
2009-12-31 22:17:49
Quello che stai cercando di fare qui non ha alcun senso. Il punto dei metodi privati è che non fanno parte della struttura pubblica della classe: per definizione, la classe dovrebbe comportarsi in modo identico indipendentemente dalla struttura dei metodi e dei campi privati. Se si desidera eseguire la componentizzazione della propria implementazione, è possibile farlo con metodi astratti o suddividere la classe in componenti, come suggerito da altri. Puoi chiarire il motivo per cui vuoi farlo? Se vuoi semplicemente semplificare facendo in modo che tutto il codice rispecchi una struttura simile dovrai farlo per convenzione, la lingua non può imporlo che –
Sì, penso che tu abbia inchiodato sulla testa. Voglio che imponga una struttura a specchio. È troppo brutto che non possa essere fatto tramite costrutti linguistici. –
Stai sbagliando. L'intero punto di incapsulamento è che non ti interessa come vengono implementate le cose, solo ciò che è il loro comportamento esterno. Le caratteristiche della lingua corrispondono alle buone pratiche ingegneristiche (soprattutto). –