한 걸음 두 걸음
자바 Java ] 람다 표현식 Ramda 본문
반응형
람다표현식이란?
JAVA8에서 새롭게 등장한 함수형 프로그래밍 기법입니다. 이를 통해 JAVA를 보다 간결하게 작성할 수 있게 되었습니다. 람다 표현식은 함수형 인터페이스와 호환됩니다. Interface의 형태를 빌려 함수를 변수처럼 사용할수 있는 개념입니다.
함수형 인터페이스란?
추상 메소드 하나만 갖고 있는 인터페이스를 이르는 말합니다.
1. Comparator 인터페이스의 추상메소드
```
int compare(param1, param2);
```
Comparator인터페이스에는 데이터의 대소를 비교하는 추상메소드가 있습니다.
임의로 한 개의 클래스를 만들어보겠습니다.
class BigNum implements Comparator<Integer> {
public int compare(int num1, int num2){
return num1 > num2 ? num1 : num2;
}
}
이처럼 Comparator인터페이스를 implements한 BigNum클래스가 있다고 하면, compare함수를 재정의해주어야합니다.
int[] nums = {10, 20, 30, 40, 50};
Arrays.sort(nums , new BigNum()); //정렬할 배열과 정렬기준을 구현한 BigNum클래스 객체를 전달해줍니다.
위와 같은 클래스와 사용예시가 있는데 이에 람다 표현을 적용시켜 보겠습니다.
int[] nums = {10, 20, 30, 40, 50};
BigNum b = (int num1, int num2) -> num1 > num2 ? num1 : num2;
Arrays.sort(nums , b);
이처럼 함수를 메소드 매개변수처럼 전달하기 위해 사용하는 방법이 바로 람다입니다.
2. Runnable 인터페이스의 추상메소드
```
void run();
```
3. 사용자 콜백 인터페이스의 추상메소드
```
void handle(ActionEvent e);
```
이 외에도 onClickListener, Predicate,Consumer, Supplier, UnaryOperator, BinaryOperator, BiConsumer, Bifunctuin 등의 함수형 인터페이스가 다양하게 있습니다.
사용이유
사용자 인터페이스를 만들 때는 java swing컴포넌트를 사용했었으나, 이제는 javafx를 사용합니다. 이 때, 사용자의 이벤트에 반응하는 함수를 만든 것이 handle()콜백함수입니다.
공부방법
프로그래밍하다가, 줄일 수 있는 부분은 intellj 개발환경에서 알려줍니다. 람다->를 이용해서 줄일 수 있는 곳 발견할 때마다 바꿔보며 연습해보시면 됩니다.
일반표현
TextView textview = (TextView)findViewById(R.id.textView_event_ramda);
textview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//클릭이벤트처리
}
});
람다표현
textview.setOnClickListener(v -> {
//클릭이벤트 처리
});
반응형
'Language > Java' 카테고리의 다른 글
자바 JAVA ] 내부클래스 inner class / 무명클래스 anonymous class (0) | 2019.11.21 |
---|---|
자바 JAVA ] instanceof 연산자 : 객체의 타입을 알아내는 방법 (0) | 2019.11.20 |
자바 Java ] 다형성 Polymorphism (0) | 2019.11.20 |
자바 JAVA ] 인터페이스 interface / CompareTo, Comparable (0) | 2019.11.20 |
자바 Java ] 오브젝트 클래스 Object Class (0) | 2019.11.20 |