Java 8:主要功能是Entenda facilmente funmbs lambda!

一个十字路口FunçõesLambda首席法官Java 8,lançadoem2014年! 禁止使用可疑物品,不得使用军刀或军刀。

Prefere esse conteúdo em vídeo? Assista aqui!

Java 8 e programação funcional

使用JavaScript的时速,可以在语言和语言上进行比较前端。 可以在Scala,Kotlin和Python上使用流行的语言来表达您的意见。 Junto desses movimentos是一种受欢迎的程序化程序,非常受欢迎。

到Java上的trazer essa possibilidadetambémpara o吧funçõeslambda。 墨西哥阿奎达市:

() -> System.out.println("Hello World")

建议您使用具有重要意义的帮助者。


Java sem funções lambda

从Java节奏的节目中搜索节目,然后从crego的提示中进行选择:

public static void main(String[] args) {
    new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("Hello World");
        }
    }).run();
}

完美的表演艺术,大问题:é吉甘特。 Pense bem,foramNecessárias6,Clod criar uma Thread e imprimir“ Hello World”,算法完成无足轻重。 阿哥拉(Agora),维斯·埃斯·梅斯莫(meja),乌米·​​弗朗西斯·拉姆达(lambda):

public static void main(String[] args) {
    new Thread(() -> System.out.println("Hello World")).run();
}

向前或向后向前伸张,向后伸张肌腱。E o mais interessante aquiéque ainda estamos utilizando梅斯莫建设者准克拉玛线。 一个重要的IDE确认信息是:

Java 8:主要功能是Entenda facilmente funmbs lambda!_第1张图片

Construtor recebendo uma instância de Runnable

O compilador sabe que essafunçãolambdaéumainstânciade可运行,mesmo quenósnãodeixemos issoexplícito。 好的,mas como ele sabe disso吗?


Java 8 e o conceito SAM

埃斯·科普塔塔图托·菲卡·简·斯堪的纳维亚百科全书单一抽象方法,SAM。 基本的,高质量的接口,可在conceito中使用。 编译器徽标,在绿色版本中使用,这是一种实施方式。 Vamos ver de perto。

一个接口可运行,示例,possui apenas ométodo跑。 JDK合作伙伴Aquiestáela:

@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

Sendo assim,utilsar umafunçãolambda como fizemos acima,compilador entende que elasópode seraimpleaçãodométodo跑。

Quantoàanotação@FunctionalInterface埃内帕·埃纳佩雷斯信息化。 Ela Instrui ao compilador que gere um错误公民报名参加预选赛界面功能,乌拉·塞贾,乌拉圭·珀德·塞·克里斯达和乌玛·拉姆达 通过示例,自定义界面DoisMétodos, ocorreria um 错误 de compilação. Apesar disso, essa anotação ãéobrigatória。 Vocêpode实用程序lambda com qualquer接口que atenda os先决条件Para Ser thinkada函数。

好吧,请问您是不是可以通过linhas decódigoem casos como esse的等价物来交易lambda servem apenas para eu diminuir?ã。 像lambdasãomuito mais的绿色úteis做que paremem。 Os exemplos que dei acimasãoapenas para征服者seu funcionamento,mas o que lass allowem fazer em Javaémuito mais游击队。


Programação funcional

使用lambdaépossível实用工具,使用com实用工具的JavaScript,como过滤,地图Ë每次。

想象一下,por范例,quevocêtem uma lista denúmeros。 Vocêdeseja imprimir o valor dos 7 primeiros,multiplicado por 2,mas apenas se onúmero成为标准杆。 Vejamos umaImplementaçãopossívelcom Java传统:

public static void main(String[] args) {
    List<Integer> lista = Arrays.asList(1,5,8,7,4,6,3,2,1,8,5,7,4);
    for (int i = 0; i < 7; i++) {
        Integer numero = lista.get(i);
        if (numero % 2 == 0) {
            System.out.println(numero * 2);
        }
    }
}

EssaéumaImplementaçãocomum,funciona perfeitamente e,Java tempal的编程程序,estost acostumado avê-la。 Porém,vamos ver como seria a mesmaImplementaçãocom o uso de流做Java 8:

public static void main(String[] args) {
    List<Integer> lista = Arrays.asList(1,5,8,7,4,6,3,2,1,8,5,7,4);
    lista.stream()
        .limit(7)
        .filter(e -> e % 2 == 0)
        .map(e -> e * 2)
        .forEach(System.out::println);
}

Para quemnãoestáacostumado,essaImplementaçãopode parecer estranha an primeira vez。 波伦,埃拉·穆伊托·梅斯康卡萨Ë定界。 Épossível军刀评估Todas,作为歌剧女歌手的名单。 存在的限制(限制),um filtro(过滤),uma转换(地图)Ëuma ação para cada item (每次)。

Essaéestrutura dafunçãolambda passada para ométodo过滤:

Java 8:主要功能是Entenda facilmente funmbs lambda!_第2张图片

Ëstrutura da função lambda passada no método filter

在流媒体中获取新的API的一部分,请在流媒体上播放梅斯·法西尔 de entender, logo, 梅斯·法西尔 de dar manutenção。 Além disso, muito 梅诺斯财产虫子。


A real vantagem do Java 8

De Fato,主要的角色,无需Java 8许可流. Sem elas seria praticamente impossível utilizar 流 com facilidade. O código seria tão grande e complicado, que simplesmente não seria útil. Se você está curioso para saber como ficaria a implementação acima sem o uso de funções lambda, aqui está. Por favor, nunca faça isso.

public static void main(String[] args) {
    List<Integer> lista = Arrays.asList(1, 5, 8, 7, 4, 6, 3, 2, 1, 8, 5, 7, 4);
    Stream<Integer> limit = lista.stream().limit(7);
    // nunca escreva um código assim!
    Stream<Integer> filter = limit.filter(new Predicate<Integer>() {
        @Override
        public boolean test(Integer e) {
            return e % 2 == 0;
        }
    });
    Stream<Integer> map = filter.map(new Function<Integer, Integer>() {
        @Override
        public Integer apply(Integer e) {
            return e * 2;
        }
    });
    map.forEach(new Consumer<Integer>() {
        @Override
        public void accept(Integer t) {
            System.out.println(t);
        }
    });
}

Um caminho para o futuro do Java

Apesar de funções lambda terem sido extremamente úteis para o lançamento da API de Streams, isso foi apenas o começo. Várias 一种PIs estão se tornando possíveis com o uso de funções lambda. O Java 9, por exemplo, trouxe Reactive Streams, o padrão implementado pela famosa biblioteca RxJava.

简明实施计划的实施和实施计划的功能lambdas no爪哇,como要求HTTP,OperaçõescomArquivosecomunicaçãocom达科斯银行。

Quer saber um pouco mais da utilidade de funções lambda? Veja esse outro artigo sobre Streams e como utilizar funções lambda com coleções.

抛物线! 阿哥拉vocêconhece表达Java 8的lambda以及contrecimento para entregareu杰梅斯拉皮多Ë渐强器呐苏阿卡雷拉。

问uer acessar esse conteúdo em vídeo também? Assista aqui!

Quer receber minhas melhores dicas para escrever código de alta qualidade e entregar projetos no prazo? Então acesse aqui.

Quer aprender a melhorar seu código diariamente? Então me segue no twitter: https://twitter.com/rinaldodev


Você您可以在lambda最新的游戏中玩吗? 您是否想过使用实用工具? Deixe umcomentário! Comptatilhetambém!

Gostou做que aprendeu? Compartilhe com胜过Devs!

O post Java 8: Entenda facilmente funções lambda, a principal novidade! apareceu primeiro em rinaldo.dev.

from: https://dev.to//rinaldodev/java-8-entenda-facilmente-funes-lambda-a-principal-novidade-59b

你可能感兴趣的:(Java 8:主要功能是Entenda facilmente funmbs lambda!)