У меня есть следующий фрагмент кода
StringJoiner joiner = new StringJoiner(", ");
joiner.add("Something");
Function<StringJoiner,Integer> lengthFunc = StringJoiner::length;
Function<CharSequence,StringJoiner> addFunc = StringJoiner::add;
Последняя строка вызывает ошибку
Error:(54, 53) java: invalid method reference
non-static method add(java.lang.CharSequence) cannot be referenced from a static context
Я понимаю, что этот метод нельзя использовать статическим способом, и я должен иметь что-то вроде:
Function<CharSequence,StringJoiner> addFunc = joiner::add;
вместо этого. Однако я не могу понять, почему третья строка, с StringJoiner::length;
для java-компилятора, абсолютно корректна. Может ли кто-нибудь объяснить мне, почему?