문제
이 질문은 이미 여기에 답이 있습니다.
- Java 7의 폐쇄 [폐쇄 7 답변
나는 내년 여름 어딘가에 출시 될 예정인 다음 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 프로젝트를 확인하십시오.
이것은 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 라이브러리는 경고없이 작성/편집 할 수 없습니다.