1) 我们在这里的目标是找到Clojure函数与Java构造之间语义匹配的地方,使它们在该处的使用变得隐式。被标记为这样的函数接口必须只有一个方法,并有明确声明的意图。SAM接口虽然在结构上相似,但没有这样的声明意图,可能与Clojure函数(而是“过程”或某种非函数概念)的语义不匹配。
话虽如此,SAM和方法值组合是一个有趣的汇聚点,我们仍在努力解决。如果你将一个方法值传递给接收SAM的方法,那是一个我们可以直接适应(就像Java使用方法引用那样)的点,而不需要创建方法值包装器并对其进行调整。这是一个没有Clojure函数也没有语义匹配需求的使用场景,我们可能仍然会支持这个,还有待确定。
2) maybeFIMethod检查类是否有@FunctionalInterface注释,这只能在接口上存在,因此检查它是否是接口是多余的。