다른 language에서는 function이라고 부르던 것을 OOP에서는 method라고 부른다.
차이는 함수는 그냥 호출할 수 있는데 비해 메소드는 클래스내에 존재해야 하므로 클래스가 필요하며 , 객체를 통해 호출해야 한다.
Java 는 이러한 메서드의 특성상 특정기능을 override하거나 overload 하기 위해서는 inner 클래스를 생성한 뒤 그 안에 메서드를 구현해야하는 불편함이 있었다.
al.sort(new Comparator<StudentScore>() {
//compare의 값이 음수이면 내림차순, 양수이면 올림차순
public int compare(StudentScore a , StudentScore b){
return b.score - a.score;
}
}
);
이 코드는 정렬을 재정의하기 위해 Comparator의 compare 메서드를 수정한 경우이다. 복잡하다.
Java 8에서는 메서드를 클래스 없이도 정의가 가능하도록 메서드를 하나의 식(Expression)으로 표현할 수 있게되었다.
이를 람다식(Lambda Expression)이라고 하며, 람다식은 메서드의 이름 및 리턴값이 필요없어진다.
'Tech-Java' 카테고리의 다른 글
자주쓰는 Excpression (0) | 2018.04.25 |
---|---|
Java 잊기쉬운거 (0) | 2018.04.19 |
Collection의 Sort 재정의 - Comparator (0) | 2017.08.20 |
기타등등 (0) | 2017.04.02 |
Java에서 정규표현식(Regular Expression) 사용하기 (0) | 2016.11.06 |
댓글