¿Hay alguna forma práctica de referenciar un método en una clase de una manera segura? Un ejemplo básico es que si quería crear algo como la siguiente función de utilidad:Reflexión del método seguro en Java
public Result validateField(Object data, String fieldName,
ValidationOptions options) { ... }
Para llamarlo, que tendría que hacer:
validateField(data, "phoneNumber", options);
Qué me obliga a utilizar una magia cadena, o declarar una constante en algún lugar con esa cadena.
Estoy bastante seguro de que no hay forma de evitarlo con el lenguaje de stock de Java, pero ¿hay algún tipo de precompilador (de grado de producción) o compilador alternativo que pueda ofrecer una solución alternativa? (Similar a cómo AspectJ extiende el lenguaje Java) Sería bueno hacer algo como lo siguiente en su lugar:
public Result validateField(Object data, Method method,
ValidationOptions options) { ... }
y llamarlo con:
validateField(data, Person.phoneNumber.getter, options);
Este es un campo común queja sobre la reflexión, y una buena razón para evitarla siempre que sea posible. Al ser alguien que tiene que reflexionar mucho sobre uno de los proyectos en los que trabajo, siento tu dolor. – aperkins
Creo que el término 'seguro para tipos' es ligeramente incorrecto. usar reflection @ java es seguro para el tipo (cuando se trata de tiempo de ejecución). los errores de tipo simplemente no aparecen antes durante la compilación. –