Sto sviluppando una classe di utilità per gestire azioni da componenti Java Swing; Vorrei sapere se esiste un modo per verificare se esiste un determinato nome di metodo (a cui si accederà con i riflessi) in fase di compilazione e mostrare un errore del compilatore in caso contrario?Java: verifica se esiste un determinato nome di metodo in fase di compilazione
--update
Ok, sembra che io non sono stato chiaro, consente di parlare di dettagli:
ho una classe denominata TomAction che uso per semplificare le dichiarazioni azioni semplici nel mio progetto. Invece di scrivere qualcosa di simile:
class MyClass {
public MyClass() {
Icon icon = null; // putting null to simplify the example
JButton btn = new JButton(new AbstractAction("Click to go!", icon) {
public void actionPerformed(ActionEvent ev) {
try {
go();
} catch (Exception e) {
e.printStackTrace();
String msg = "Fail to execute 'go' task.";
JOptionPane.showMessageDialog(null, msg, "Fail", JOptionPane.ERROR_MESSAGE);
}
}
});
}
private void go() {
// do task
}
}
..Io basta scrivere:
class MyClass {
public MyClass() {
String msg = "Fail to execute 'go' task.";
Icon icon = null; // putting null to simplify the example
TomAction act = new TomAction("go", this, "Click to go!", msg, icon);
JButton btn = new JButton(act);
}
private void go() {
// do task
}
}
..e il programma hanno lo stesso comportamento.
Il problema è che se scrivo un nome di metodo errato come argomento per TomAction, lo vedrò solo in fase di esecuzione. Mi piacerebbe vederlo in fase di compilazione. Fatto? :)
A proposito, questa classe sta funzionando molto bene, voglio solo fare questo miglioramento.
--update
studiando le annotazioni avvicinarsi
Quindi questo nome non è qualcosa che si conosce solo in fase di esecuzione? Cioè, non è quello che l'utente digita, o quello che ti dice una bacchetta magica? Conosci _ il nome in fase di compilazione e vuoi che il compilatore (o qualcosa) ti controlli se il metodo (il cui nome è noto al momento della compilazione) esiste al momento della compilazione? Perché hai bisogno di riflessione, quindi ??? – polygenelubricants
@polygenelubrificanti si prega di consultare il mio aggiornamento –
@ Tom: la risposta di Joachim si applica ancora. Utilizza le interfacce. – BalusC