我想知道如何区分同名的静态和非静态方法引用。在我的示例中,我有一个名为StringCollector
的类,它具有以下三个方法:StringCollector append(String string)
静态StringCollector append(StringCollector stringCollector, String string)
StringCollector conat(StringCollector stringCollector)
现在如果我想使用Stream
在这种情况下,对实例方法append
的未绑定引用与对静态方法append
的引用具有相同的性质、参数类型甚至返回值,因此不,您无法解决方法引用的歧义消除。如果您不想重命名其中一个方法,则应该使用lambda代替:
collect(StringCollector::new, (sb, s) -> sb.append(s), StringCollector::concat);
或者如果你真的想使用静态方法:
collect(StringCollector::new, (sb, s) -> StringCollector.append(sb, s),
StringCollector::concat);