Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

    
            
  •              Cierre en Java 7 [cerrado]                                      7 respuestas                          
  •     
    

He oído que se podrían introducir cierres en el próximo estándar Java que se lanzará en algún lugar alrededor del próximo verano.

¿Cómo sería esta sintaxis?

Leí en alguna parte que introducir cierres en java es un cambio más grande que el genérico en java 5. ¿Es esto cierto? pros y contras?

(Por ahora, definitivamente sabemos que los cierres no se incluirán en la próxima versión de Java)

O

edite: http://puredanger.com/ tech / 2009/11/18 / closures-after-all / : D

edit2: Repensar JDK7: http://blogs.oracle.com/ mr / entry / rethinking_jdk7

edit3: ¡No hay un momento que perder !: http://blogs.oracle .com / mr / entry / quartet

¿Fue útil?

Solución

Eche un vistazo a http://www.javac.info/ .

Parece que así se vería:

boolean even = { int x => x % 2 == 0 }.invoke(15);

donde el {int x = > x% 2 == 0} bit es el cierre.

Otros consejos

Realmente depende de lo que se introduzca, y de hecho si se introducirá. Hay una serie de propuestas de cierre de diferentes tamaños.

Consulte la página Java 7 de Alex Miller para ver las propuestas y varias publicaciones de blog.

Personalmente, me encantaría ver cierres: son hermosos e increíblemente útiles - Pero me temo que algunas de las propuestas son bastante complicadas.

En noviembre de 2009 hubo un sorprendente cambio de sentido en este tema, y ?? los cierres ahora se agregarán a Java 7.

Actualizar

Los cierres (también conocidos como expresiones lambdas) en Java 7 no ocurrieron. Se agregaron finalmente en la primera versión de Java 8 en 2014.

Desafortunadamente, no encontrará el cierre en Java 7. Si está buscando una solución más liviana para cerrar en Java, consulte el proyecto lambdaj:

http://code.google.com/p/lambdaj/

Estas son las características de Java 7 http://tech.puredanger.com/java7/#switch los ejemplos son muy útiles.

Tenga en cuenta que un " función-tipo " Es realmente un tipo bajo la propuesta:

{int => boolean} evaluateInt;    //declare variable of "function" type
evaluateInt = {int x => x % 2 }; //assignment

Creo que todavía hay mucho debate sobre qué sintaxis se utilizará en última instancia. De hecho, me sorprendería bastante si esto llega a Java 7 debido a todo eso.

los cierres serán molestamente detallados si no habrá ningún tipo de inferencia de tipo ... :(

Los cierres tienen algunos casos graves de borde. Yo diría que los cierres son un cambio mucho más significativo que los genéricos y que más tarde todavía tiene un número de casos de borde velludo. p.ej. Las bibliotecas de colecciones de Java no se pueden escribir / compilar sin advertencias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top