화살표 연산자 ‘->’는 Java에서 무엇을합니까? == ((Car)arg0).getStyle(); }); 세부 정보

일부 코드를 통해 사냥하는 동안 화살표 연산자를 발견했습니다. 정확히 무엇을합니까? Java에는 화살표 연산자가 없다고 생각했습니다.

return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
        return Car.SEDAN == ((Car)arg0).getStyle();
});

세부 정보 : Java 6, Apache Commons Collection, IntelliJ 12

업데이트 / 답변 : IntelliJ 12는 람다를 지원하고 술어를 “폴딩”하고 람다로 표시하는 Java 8을 지원합니다. 아래는 “접히지 않은”코드입니다.

return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
    public boolean evaluate(Object arg0) {
        return Car.SEDAN == ((Car)arg0).getStyle();
    }
});



답변

Java 8에 도입 된 새로운 람다 식의 구문 중 일부입니다.이 기능을 익히기위한 몇 가지 온라인 자습서가 있습니다. 여기에 대한 링크 가 있습니다. 기본적으로 ->매개 변수 (왼쪽)와 구현 (오른쪽)을 구분합니다.

람다 식을 사용하는 일반적인 구문은 다음과 같습니다.

(매개 변수)-> {Body} 여기서 ‘->’는 매개 변수와 람다 식 본문을 구분합니다.

매개 변수는 메서드와 같은 방식으로 괄호로 묶고 람다 식 본문은 중괄호로 묶인 코드 블록입니다.


답변

기능 인터페이스를 구현하려는 경우에도 유용합니다.

Runnable r = ()-> System.out.print("Run method");

에 해당

Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.print("Run method");
            }
        };


답변

이 화살표는 IDE 때문에 존재한다고 생각합니다. IntelliJ IDEA는 일부 코드로 이러한 작업을 수행합니다. 이것을 코드 접기라고합니다. 화살표를 클릭하여 확장 할 수 있습니다.


답변

람다 식입니다.

이는 listOfCars에서 arg0이 해당 목록의 항목 중 하나임을 의미합니다. 그 항목으로 그는 괄호 안에 무엇이든지-> 할 것입니다.

이 예에서는 조건에 맞는 자동차 목록을 반환합니다.

Car.SEDAN == ((Car)arg0).getStyle();


답변

Java 8에 추가 된 람다 식의 새로운 연산자

람다 식은 메서드 작성짧은 방법입니다. 기능적 인터페이스
를 구현하는 데 간접적으로 사용됩니다.

주요 구문 : (매개 변수)-> {statement; }

효과적인 람다 식 작성에 대한 몇 가지 기본 규칙 이 있습니다.


답변