Why i cant use StringBuilder::reverse in as method reference to reverse a string? please help make me understand whats going on under the hood.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.function.UnaryOperator;
public class Main {
public static void main(String[] args) {
Random random = new Random();
String[] names = {
"MEmarGya", "KaandHoGYa",
"lmaodEd", "OmFOOF",
"lakshayGulatiOP", "deEpAkKaLaL"
};
List<String> namesList = Arrays.asList(names);
ArrayList<UnaryOperator<String>> operators = new ArrayList<>();
operators.add(s -> s.toUpperCase());
operators.add(String::toUpperCase);
operators.add(s -> s + s.charAt(random.nextInt(0, s.length())));
operators.add(s -> s + ' ' + new StringBuilder(s).reverse());
operators.add(StringBuilder::reverse); //<------ Here
for (UnaryOperator<String> operator: operators) {
namesList.replaceAll(operator);
System.out.println(Arrays.toString(names));
}
}
}
err occured:
java: incompatible types: invalid method reference method reverse in class java.lang.StringBuilder cannot be applied to given types required: no arguments found: java.lang.String reason: actual and formal argument lists differ in length