sábado, 28 de fevereiro de 2015

Exemplo simples de Lambda no Java 8

Entre as várias novidades do Java 8 os lambdas tem recebido uma boa atenção. Você sabe o que é um lambda, e como usar? Falando da forma mais simples possível um lambda é uma maneira bem mais limpa de implementar uma interface com um só método, essas interfaces são agora chamadas de funcionais. Podemos usar um lambda agora, por exemplo, para percorrer uma lista. A interface java.lang.Iterable ganhou um novo método o forEach (graças aos Default Methods) que recebe um Consumer uma interface funcional, visto que ela só tem um método abstrato o accept. O código ficaria mais ou menos assim:

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author daniel
 */
public class Java8Tests {

    public static void main(String[] args) {
        
        List frutas = new ArrayList();
        frutas.add("banana");
        frutas.add("limão");
        frutas.add("laranja");
        frutas.add("maçã");
        frutas.add("pêra");
        
        frutas.forEach(fruta -> System.out.println(fruta));
        
    }
    
}

O treco de código : fruta -> System.out.println(fruta) é um lambda do Java 8. Esse é provavelmente o uso mais simples de um lambda é claro que ele não foi criado apenas para este fim, por isso aprofunde-se no assunto.

sexta-feira, 27 de fevereiro de 2015

Importando enumeradores Java em páginas JSF

Recentemente tive um pequeno problema para usar enum's nas minhas páginas com JSF. Por exemplo gostaria de usar uma enum para determinar se com campo deveria estar desabilitado ou não. Nas minhas pesquisas vi que o até o JSF 2.2 não é possível usar constantes ou qualquer outro campo static em expressões EL. Também não queria encher os meus ManagedBens com get's e set's para cada enum que precisasse. Encontrei a solução na biblioteca PrimeFaces Extensions, que possui tags para a importação de constantes, tornado possível o uso das mesmas em expressões EL. Ficaria mais ou menos assim:
   package br.com.duosoftware.exemplo.enums;

   public enum Status{
       EM_ANALISE, CONFIRMADO, RECUSADO
   }
E na página:
   
     
   Status: #{Status.CONFIRMADO}
Veja mais em: PrimeFaces Extensions Showcase.

Translate