문제

이 질문은 이미 여기에 답이 있습니다.

나는 내년 여름 어딘가에 출시 될 예정인 다음 Java 표준에서 폐쇄가 도입 될 수 있다고 들었습니다.

이 구문은 어떻게 생겼습니까?

나는 Java에서 폐쇄를 도입하는 것이 Generic이 Java 5보다 더 큰 변화라는 것을 읽었습니다. 이것이 사실입니까? 장점과 단점?

(지금까지 우리는 클로저가 다음 Java 릴리스에 포함되지 않을 것임을 확실히 알고 있습니다)

또는

편집하다: http://puredanger.com/tech/2009/11/18/closures-after-all/ :디

edit2 : jdk7을 다시 생각합니다. http://blogs.oracle.com/mr/entry/rethinking_jdk7

edit3 : 잃을 순간이 없습니다! : http://blogs.oracle.com/mr/entry/quartet

도움이 되었습니까?

해결책

살펴보십시오 http://www.javac.info/ .

이것이 어떻게 보이는지처럼 보입니다.

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

어디에 { int x => x % 2 == 0 } 비트는 폐쇄입니다.

다른 팁

그것은 실제로 소개되는 것에 달려 있으며 실제로 ~이든 전혀 소개 될 것입니다. 다양한 크기의 폐쇄 제안이 여러 개 있습니다.

보다 Alex Miller의 Java 7 페이지 제안 및 다양한 블로그 게시물.

개인적으로 나는 폐쇄를보고 싶다 - 그들은이다 아름답고 엄청나게 도움이됩니다 - 그러나 나는 제안 중 일부가 꽤 털이 있다고 두려워합니다.

2009 년 11 월 에이 문제에 대한 놀라운 U 턴이 있었고 이제 클로저가 추가됩니다 Java 7.

업데이트

Java 7의 폐쇄 (일명 Lambdas Expressions)는 일어나지 않았습니다. 그들은 마지막으로 2014 년 Java 8의 첫 번째 릴리스에 추가되었습니다.

불완전하게 Java에서 폐쇄되지 않습니다. Java에서 폐쇄 할 수있는 가벼운 솔루션을 찾고 있다면 이제 Lambdaj 프로젝트를 확인하십시오.

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

이것은 Java 7 기능입니다 http://tech.puredanger.com/java7/#switch 예제는 매우 유용합니다.

"기능 유형"은 실제로 제안에 따라 유형입니다.

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

나는 구문이 궁극적으로 사용될 것과 관련하여 여전히 많은 논쟁이 있다고 생각합니다. 이것이 모든 것이 Java 7으로 만들어지면 실제로 놀랄 것입니다.

어떤 종류의 유형 추론이 없다면 폐쇄는 성가 시게 될 것입니다 ... :(

폐쇄에는 심각한 가장자리가 있습니다. 나는 폐쇄가 제네릭보다 훨씬 더 중요한 변화이며 나중에는 여전히 털이 많은 엣지 케이스가 있습니다. 예를 들어 Java Collections 라이브러리는 경고없이 작성/편집 할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top