Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Method Reference - passando argumentos

List<String> palavras = new ArrayList<>();
        palavras.add("alura online");
        palavras.add("casa do código");
        palavras.add("caelum");

Usando Lambda compila: palavras.removeIf(palavra -> palavra.equals("alura online"));

Por que não compila usando Method Reference? palavras.removeIf(String::equals("alura online"));

2 respostas
solução!

A sintaxe do Method Reference não inclui os parênteses nem o argumento. Você não consegue passar nenhum outro parâmetro além daqueles que estariam na lambda (no seu caso o palavra). O correto seria:

String::equals

Porém, essa sintaxe também não compilaria porque estaria acessado o método equals de maneira estática, conforme abaixo:

String.equals(palavra)

Se você realmente quer utilizar o removeIf com Method Reference, você teria que criar um método estático ou em um outro objeto e passá-lo. Abaixo segue um exemplo com uso de método estático:

public static boolean removerCursoAlura(String curso) {
    return curso.equals("alura online");
}

palavras.removeIf(ClasseQualquer::removerCursoAlura);

Espero que minha explicação não esteja confusa :p Abaixo tem um link de um tutorial bacana. https://blog.idrsolutions.com/2015/02/java-8-method-references-explained-5-minutes/

Obrigado Wesley, ajudou bastante sua explicação.