如何正确确定一个对象是lambda?
问题内容:
我看到lambda的类是isSynthetic() && !isLocalOrAnonymousClass()
,但是我认为对于代理类而言可能同样如此。
当然,我可以检查一下getDeclaredMethods().length == 1
并应用于regexp
类名。
但是我想知道是否有一个更优雅,更强大的选项来确定给定的对象是否为lambda。
问题答案:
设计上没有官方的方法可以做到这一点。Lambda是语言的一部分;并通过功能接口集成到类型系统中。无需区分以Runnable
lambda,命名类或内部类开头的生命,它们都是Runnable。如果您认为必须拆开类文件来“处理lambda”,则几乎可以肯定是做错了什么!