Mudanças entre as edições de "Exemplos de Method Reference"

De Basef
Ir para: navegação, pesquisa
Linha 35: Linha 35:
  
 
Os códigos acima estão usando o novo método default do Java 8 "comparing". Este método recebe uma implementação de "Function", uma interface também do Java 8.
 
Os códigos acima estão usando o novo método default do Java 8 "comparing". Este método recebe uma implementação de "Function", uma interface também do Java 8.
 +
 +
'''Exemplo 2:'''
 +
 +
Segue abaixo outro  exemplo de Method Reference do Java 8:
 +
 +
<source lang="java">
 +
palavras.forEach(System.out::println);
 +
</source>
 +
 +
Este código é similar ao seguinte Lambda:
 +
 +
<source lang="java">
 +
palavras.forEach(s -> System.out.println(s));
 +
</source>
 +
 +
Que é similar ao seguinte código, sem Lambda, usando classe anônima:
 +
 +
<source lang="java">
 +
palavras.forEach(new Consumer<String>() {
 +
    @Override
 +
    public void accept(String s) {
 +
        System.out.println(s);
 +
    }
 +
});
 +
</source>

Edição das 22h49min de 8 de julho de 2017

Supondo que temos uma lista de palavras como abaixo:

List<String> palavras = new ArrayList<>();
 
palavras.add("alura online");
palavras.add("editora casa do codigo");
palavras.add("caelum");

Segue abaixo alguns exemplos de Method Reference do Java 8:

Exemplo 1:

palavras.sort(Comparator.comparing(String::length));

O código acima é similar ao Lambda:

palavras.sort(Comparator.comparing(s -> s.length()));

Que é similar ao seguinte, código sem Lambda, usando classe anônima:

palavras.sort(Comparator.comparing(new Function<String, Integer>() {
    @Override
    public Integer apply(String s) {
        return s.length();
    }
}));

Os códigos acima estão usando o novo método default do Java 8 "comparing". Este método recebe uma implementação de "Function", uma interface também do Java 8.

Exemplo 2:

Segue abaixo outro exemplo de Method Reference do Java 8:

palavras.forEach(System.out::println);

Este código é similar ao seguinte Lambda:

palavras.forEach(s -> System.out.println(s));

Que é similar ao seguinte código, sem Lambda, usando classe anônima:

palavras.forEach(new Consumer<String>() {
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
});