48 votes

Comment déterminer correctement que d'un objet est un lambda?

Je vois que la classe d'un lambda est - isSynthetic() && !isLocalOrAnonymousClass(), mais je suppose que la même chose peut être vrai pour les classes de proxy.

Bien sûr, j'ai pu vérifier que getDeclaredMethods().length == 1 et s'applique regexp pour le nom de la classe.

Cependant je voudrais savoir si il y a un plus élégant et robuste option pour savoir si un objet donné est un lambda.

59voto

Brian Goetz Points 6062

Il n'y a pas de manière officielle pour ce faire, de par leur conception. Elles font partie de la langue; et sont intégrés dans le système de type par le biais d'interfaces fonctionnelles. Il ne devrait pas être nécessaire de distinguer un Runnable qui a commencé sa vie comme un lambda, un nom de classe, ou un intérieur de classe, ils sont tous Runnables. Si vous pensez que vous avez afin de "traiter lambda" en démontant le fichier de classe, vous êtes presque certainement fait quelque chose de mal!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X