usar streams procesamiento parte para instrucciones funciones expresiones datos con como anonimas java lambda java-8

streams - lambda stream java



¿Cómo determinar correctamente que un objeto es un lambda? (2)

Veo que la clase de un lambda es isSynthetic() && !isLocalOrAnonymousClass() , pero supongo que lo mismo puede ser cierto para las clases de proxy.

Por supuesto, podría verificar getDeclaredMethods().length == 1 y aplicar regexp al nombre de la clase.

Sin embargo, quiero saber si existe una opción más elegante y robusta para averiguar si un objeto dado es una lambda.


No hay forma oficial de hacerlo, por diseño. Lambdas son parte del lenguaje; y están integrados en el sistema de tipos a través de interfaces funcionales. No debería haber necesidad de distinguir un Runnable que comenzó su vida como una lambda, una clase con nombre o una clase interna: todos son Runnables. Si crees que tienes que "tratar con lambda" desmantelando el archivo de la clase, ¡casi seguro que estás haciendo algo mal!


public static boolean isLambda(Object obj) { return obj.getClass().toString().contains("$$Lambda$"); }