2014-07-20 1 views
0

Est-il possible d'obtenir une instance de java.lang.reflect.Method en utilisant la nouvelle fonction de référence de méthode de Java 8?Obtenir l'objet de méthode avec les références de méthode

De cette façon, j'aurais une vérification du temps de compilation et le refactoring serait également plus facile. Aussi, je n'aurais pas besoin d'attraper les exceptions (qui ne devraient pas être jetées après tout).

Répondre

1

Réponse courte: Non

Vous obtiendrez un lambda de cette méthode, pas un java.lang.reflect.Method. Vous ne connaissez pas le nom de la méthode. Tout comme vous ne pouvez pas avoir de référence à une "propriété" d'un bean java. Vous pouvez avoir une référence au getter ou au setter mais c'est aussi un lambda et vous ne connaissez pas le nom réel. Dans tous les cas, vous devrez fournir le nom en tant que chaîne et cela ne peut pas être vérifié par le compilateur. J'ai aussi essayé mais j'ai échoué. Cela ne peut tout simplement pas être fait à moins d'écrire quelque chose qui vérifie le javacode/bytecode. Mais il y a des outils qui font cela. Peut-être que l'API Criteria pourrait être utilisée pour cela, mais cela dépend des exigences. http://docs.oracle.com/javaee/6/tutorial/doc/gjitv.html Là, vous auriez un SingularAttribute ou un champ similaire sur un "métamodèle", puis le compilateur java régulier peut en vérifier le type (générique).

Questions connexes