1)我们的目标是在Clojure函数与Java构造之间找到语义匹配的地方,并使它们在这个地方的使用变得隐式。标有此类标记的功能接口必须只有一个方法,并明确表达了这种意图。虽然SAM接口在结构上相似,但没有这种明确的意图,也可能不与Clojure函数在语义上匹配(而是“过程”或其他非功能性概念)。
尽管如此,SAM和方法值组合是一个有趣的交集点,我们仍在研究该点。如果你向接受SAM的方法传递方法值,那是一个我们可以直接适应(就像Java使用方法引用)而不创建方法值包装器并适应此点的地方。这是一个没有Clojure函数且不需要语义匹配的使用案例,我们可以支持这一点,还待定。
2)maybeFIMethod检查类是否有@FunctionalInterface注解,这只能存在于接口中,因此检查是否为接口是冗余的。