Scala 的“call be name”示例:
def giveMeName(b: => String)
Java结果:
public class some.package.CallByNameEx {
public void giveMeName(scala.Function0<java.lang.String>);
public some.package.CallByNameEx();
}
Java 的功能接口 API 示例:
void giveMeName(Supplier<String> b)
Java结果:
public class some.package.SupplyEx {
public some.package.SupplyEx();
void giveMeName(java.util.function.Supplier<java.lang.String>);
}
javap
考虑到上述两种情况的结果几乎相同,它们在内部评估的方式是否有任何重大差异
根据我目前的理解,它们都使用闭包并懒惰地评估表达式。如果理解有误请指正。