Solusi saya adalah menggunakan metode yang mengembalikan kelas anonim yang diimplementasikan. Argumen reguler dapat diteruskan ke metode dan tersedia dalam kelas anonim.
Misalnya: (dari beberapa kode GWT untuk menangani perubahan kotak teks):
/* Regular method. Returns the required interface/abstract/class
Arguments are defined as final */
private ChangeHandler newNameChangeHandler(final String axisId, final Logger logger) {
// Return a new anonymous class
return new ChangeHandler() {
public void onChange(ChangeEvent event) {
// Access method scope variables
logger.fine(axisId)
}
};
}
Untuk contoh ini, metode kelas anonim baru akan dirujuk dengan:
textBox.addChangeHandler(newNameChangeHandler(myAxisName, myLogger))
ATAU , menggunakan persyaratan OP:
private ActionListener newActionListener(final int aVariable) {
return new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Your variable is: " + aVariable);
}
};
}
...
int myVariable = 1;
newActionListener(myVariable);
final
variabel lokal dari metode melampirkan.