Estoy buscando una solución conveniente para obtener el objeto Método de un método. La idea:Cómo obtener el objeto Método en Java sin usar los nombres de cadena de método
Method fooMethod = getMethod(new MyObject().foo()) // returns method "foo" in MyObject
La manera obvia es utilizar el nombre del método como una cadena:
Method fooMethod = MyObject.class.getMethod("foo")
pero quiero evitar esto porque si cambio el nombre foo() que el código dejará de funcionar o he cambiado el nombre de la cadena en todos los lugares donde se usa.
El caso de uso es que quiero usar algo similar a ProperyChangeListeners, pero estos se basan en el nombre del método como cadena. Me gustaría usar el método real (de forma segura) y no depender de cadenas.
¿Qué podría usar para obtener el método en un cambiar el nombre seguro manera?
ACTUALIZACIÓN: Me gustaría encontrar una solución pura de Java que no se basa en el IDE cuenta con
Aunque, como otros mencionan los IDE, pueden quitarle parte del dolor, lo que usted describe actualmente no es posible. Me parece recordar una petición de características/JSR proponiendo una sintaxis como 'MyObject # foo' o algo así, pero ya no puedo encontrarlo. –
Aunque no es posible, estoy buscando posibles soluciones alternativas que actualmente se pueden usar – Andrejs
@ArnoutEngelen Las lambdas de Java 8 están programadas para tener una funcionalidad similar: http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state -4.html (sección 8). Tenga en cuenta que esto no le dará un Método, sino una lambda que luego puede invocar. – yshavit