**Fun fact**: To be very precise, it is not infinite. A method can have at most 254 arguments. This limit is specified in the JVM and not in the Java language specification. Of course, one is useless without the other. There are 8 primitive types (plus `Object`, plus the possibility that there are less than 254 arguments), which means that the total number of possible functional interfaces is 10<sup>254</sup>, give or take a few magnitudes. Almost infinite!
也可以引用实例方法,而不给出应该调用它的引用。这可以在函数式接口方法有一个额外的第一个参数的地方使用,这个参数将用作实例。我们已经在第 3 章中使用过了,*优化排序代码专业*,当我们通过`String::compareTo`时,当期望的参数是`Comparator`时。`compareTo()`方法需要一个参数,而`Comparator`接口中的`compare()`方法需要两个参数。在这种情况下,第一个参数将用作必须调用`compare()`的实例,第二个参数将传递给`compare()`。在这种情况下,`String::compareTo`与写入 lambda 表达式`(String a, String b) -> a.compareTo(b)`相同。
也可以引用实例方法,而不给出应该调用它的引用。这可以在函数式接口方法有一个额外的第一个参数的地方使用,这个参数将用作实例。我们已经在第 3 章中使用过了,“优化专业排序代码”,当我们通过`String::compareTo`时,当期望的参数是`Comparator`时。`compareTo()`方法需要一个参数,而`Comparator`接口中的`compare()`方法需要两个参数。在这种情况下,第一个参数将用作必须调用`compare()`的实例,第二个参数将传递给`compare()`。在这种情况下,`String::compareTo`与写入 lambda 表达式`(String a, String b) -> a.compareTo(b)`相同。