Articles of java 8

O que o operador de seta ‘->’ faz em Java?

Enquanto procurava algum código, encontrei o operador de setas, o que exatamente ele faz? Eu pensei que Java não tivesse um operador de flecha. return (Collection) CollectionUtils.select(listOfCars, (arg0) -> { return Car.SEDAN == ((Car)arg0).getStyle(); }); Detalhes : Java 6, Coleção Apache Commons, IntelliJ 12 Update / Answer: Acontece que o IntelliJ 12 suporta o Java […]

org.apache.tomcat.util.bcel.classfile.ClassFormatException: Tag de byte inválida no pool constante: 15

Estou portando um webapp do Tomcat 7 para outro servidor com o Tomcat 7, mas com o Java 8. Tomcat começa com sucesso, mas no log catalina.out eu recebo: org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15 at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:131) at org.apache.tomcat.util.bcel.classfile.ConstantPool.(ConstantPool.java:60) at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2049) at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1931) at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1899) at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1885) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1281) […]

Definição precisa de “interface funcional” no Java 8

Recentemente comecei a explorar o Java 8 e não consigo entender bem o conceito de “interface funcional” que é essencial para a implementação de expressões lambda do Java. Existe um guia bastante abrangente para funções lambda em Java, mas fiquei preso no capítulo que dá definição ao conceito de interfaces funcionais . A definição diz: […]

Qual é a diferença entre os methods map e flatMap no Java 8?

No Java 8, qual é a diferença entre os methods Stream.flatMap e Stream.flatMap ?

Java 8: desempenho de Streams vs Collections

Sou novo no Java 8. Ainda não conheço a API em profundidade, mas fiz uma pequena referência informal para comparar o desempenho da nova API do Streams com as boas e antigas Coleções. O teste consiste em filtrar uma lista de Integer e, para cada número par, calcular a raiz quadrada e armazená-la em um […]

Converter Iterable para Fluxo usando o Java 8 JDK

Eu tenho uma interface que retorna java.lang.Iterable . Eu gostaria de manipular esse resultado usando a API do Java 8 Stream. No entanto Iterable não pode “Stream”. Alguma idéia de como usar streams (sem converter Iterable para List)?

Qualquer diferença entre java.time.Clock.systemDefaultZone (). GetZone () vs java.util.TimeZone.getDefault (). ToZoneId ()?

Existe alguma diferença entre os dois, dado que ambos java.time.Clock.systemDefaultZone().getZone() e java.util.TimeZone.getDefault().toZoneId() retornam a mesma saída. Por exemplo, este código import java.time.Clock; import java.util.TimeZone; public class Main { public static void main(String[] args) { System.out.println(“Clock.systemDefaultZone().getZone() : ” + Clock.systemDefaultZone().getZone()); System.out.println(“TimeZone.getDefault().toZoneId() : ” + TimeZone.getDefault().toZoneId()); } } retorna esta saída Clock.systemDefaultZone().getZone() : Europe/Paris TimeZone.getDefault().toZoneId() : Europe/Paris

Existe uma maneira de comparar lambdas?

Digamos que eu tenha uma lista de objects que foram definidos usando expressões lambda (closures). Existe uma maneira de inspecioná-los para que possam ser comparados? O código em que estou mais interessado é List strategies = getStrategies(); Strategy a = (Strategy) this::a; if (strategies.contains(a)) { // … O código completo é import java.util.Arrays; import java.util.List; […]

O que é o uso da interface funcional no Java 8?

Eu me deparei com um novo termo chamado Interface Funcional no Java 8. Eu só consegui encontrar um uso dessa interface ao trabalhar com expressões lambda . O Java 8 fornece algumas interfaces funcionais internas e, se quisermos definir qualquer interface funcional, podemos usar a anotação @FunctionalInterface . Isso nos permitirá declarar apenas um único […]

Inferência do tipo Java: a referência é ambígua no Java 8, mas não no Java 7

Vamos dizer que temos 2 aulas. Uma class vazia Base e uma subclass dessa class Derived . public class Base {} public class Derived extends Base {} Então nós temos alguns methods em outra class: import java.util.Collection public class Consumer { public void test() { set(new Derived(), new Consumer().get()); } public T get() { return […]