Enquanto procurava por algum código, me deparei com o operador de seta, o que exatamente ele faz? Eu pensei que Java não tinha um operador de seta.
return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
return Car.SEDAN == ((Car)arg0).getStyle();
});
Detalhes : Java 6, Apache Commons Collection, IntelliJ 12
Atualização / resposta: Acontece que o IntelliJ 12 suporta Java 8, que suporta lambdas, e está "dobrando" Predicados e exibindo-os como lambdas. Abaixo está o código "desdobrado".
return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
public boolean evaluate(Object arg0) {
return Car.SEDAN == ((Car)arg0).getStyle();
}
});
java
intellij-idea
apache-commons
java-8
apache-commons-collection
Mike Rylander
fonte
fonte
Respostas:
Isso faz parte da sintaxe das novas expressões lambda, a serem introduzidas no Java 8. Existem alguns tutoriais on-line para entender o jeito, aqui está um link para um. Basicamente, o
->
separa os parâmetros (lado esquerdo) da implementação (lado direito).A sintaxe geral para usar expressões lambda é
(Parâmetros) -> {Body} onde o '->' separa os parâmetros e o corpo da expressão lambda.
Os parâmetros estão entre parênteses, da mesma maneira que para os métodos, e o corpo da expressão lambda é um bloco de código entre chaves.
fonte
Essa também é útil quando você deseja implementar uma interface funcional
é equivalente a
fonte
Acredito que esta flecha existe por causa do seu IDE. O IntelliJ IDEA faz isso com algum código. Isso é chamado de dobragem de código. Você pode clicar na seta para expandi-la.
fonte
É uma expressão lambda.
Isso significa que, a partir de listOfCars, arg0 é um dos itens dessa lista. Com esse item, ele fará, daí o ->, o que estiver dentro dos colchetes.
Neste exemplo, ele retornará uma lista de carros que se encaixam na condição
fonte
Novo operador para expressão lambda adicionado no java 8
A expressão lambda é o caminho mais curto para escrever métodos.
É indiretamente usado para implementar interface funcional
Sintaxe primária: (parâmetros) -> {declarações; }
Existem algumas regras básicas para escrever expressões lambda eficazes que você deve conhecer.
fonte