Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 테크톡
- 프로그래머스
- 우아한테크
- java크롤링
- select즐겨찾기
- sql error [1] [23000]: ora-00001
- ecleemma
- 티스토리챌린지
- 이클립스로딩지연
- 오블완
- 생성자오버로딩
- 테이블복사생성
- Java
- git
- 이클립스로딩
- 메모리낭비적은string연산
- this
- sql error [947] [42000]: ora-00947
- Sequence
- this()
- 다형성
- error페이지 설정
- 이클립스무한로딩
- 이클립스형광줄
- 이클립스느림
- unresolved compilation problems
- sql error [936] [42000]: ora-00936
- 조건위치 효율성
- 오버로딩
- oracle
코딩항해기
[JAVA] 람다식 (익명 메서드) (+함수형 인터페이스) 본문
람다식 Lambda expression
함수의 이름이 없는 익명함수(anonymous function)를 만들기 위한 표현식이다.
식과 문
값 Value | 식이 평가되어 생성된 결과로, 프로그램이 조작할 수 있는 어떤 표현이다. |
식 Expression | 식 또는 표현식이라고 하며 값을 결정짓기 위해 평가 될 수 있는 구문이다. |
문 Staement | 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다. 문은 데이터에 어떤 액션을 취할 것인지 결정할 수 있고 식을 내부 요소로 가질 수 있다. |
람다식은 이름에서도 알 수 있듯 식에 해당한다.
2 + 3 // 5로 평가되는 연산식이다.
4 ≠ 4 // flase라는 값으로 평가되는 관계식이다.
y + 6 // 변수도 값으로 평가되므로 역시 식이다.
const a = 1; // 선언문
b = a + 5; // 할당문
play(car); // 함수 호출문
return; // 리턴 호출문
for (let i = 0; i < limit; i++) // 반복문
if (flag) // 조건문
//[출처] https://365kim.tistory.com/85
람다식 문법
void printHello() {
System.out.println("안녕하세요");
}
//1. 메소드 명을 없애고 () 뒤에 ->를 추가한다
//2. 반환타입은 추론이 가능하므로 생략한다
//3. 명령문이 1줄이면 중괄호와 세미콜론을 생략가능하다 (선택)
()-> System.out.println("안녕하세요")
int add10(int num) {
return num + 10;
}
// 1.이름을 없애고 ()뒤에 화살표를 추가한다
// 2.반환타입 추론 가능하므로 생략한다
// 3. 매개변수의 타입 추론가능하므로 생략한다(선택)
// 4. 매개변수가 1개라면 ()를 생략가능하다(선택)
// 단, 자료형을 생략하지 않았다면 ()를 생략할 수 없다
// 5.명령문이 1줄이면 중괄호와 세미콜론 생략가능(선택)
// 중괄호와 세미콜론을 생략하면 return도 생략해야한다
// 바디의 결과가 값이라면 자동으로 return된다
// 단, 바디의 명령문이 1줄이어야 한다.
num -> num +10
int addNumber(int num1, int num2) {
System.out.println(num1 + " + " + num2 + " = " + num1 + num2);
return num1 + num2;
}
// 1. 이름을 없애고 화살표 -> 를 추가한다.
// 2. 반환타입과 매개변수의 타입 추론가능하므로 생략 가능하다.
// 3. 매개변수가 2개 이상이므로 () 생략 불가하다.
// 4. 명령문이 2개 이상이므로 {}와 ; 생략불가하다.
// 5. 반환할 값이 존재한다면 return을 사용한다.
(num1, num2) -> {
System.out.println(num1 + " + " + num2 + " = " + num1 + num2);
return num1 + num2;
}
함수형 인터페이스
람다식을 이용해 인터페이스를 정의하는 경우, 단 하나의 기능만 가진 인터페이스만 정의할 수 있다.
람다식의 타입 타겟이며 오직 하나의 추상 메서드가 선언된 인터페이스를 함수형 인터페이스라고 한다.
함수형 인터페이스라는 것을 명시해주기 위해 @Functionallnterface 어노테이션을 상단에 작성한다.
함수형 인터페이스 선언
@FunctionalInterface
public interface 인터페이스명 {
//단 하나의 추상 메서드
int 메서드명 (int num1, int num2);
}
람다식 사용
인터페이스명 interfaceLambda = (num1, num2) -> {return num1 > num2? true : false;}; //객체 선언
'JAVA' 카테고리의 다른 글
[JAVA] 파일 입출력 (0) | 2024.07.29 |
---|---|
[JAVA] 스레드 Thread (0) | 2024.07.28 |
[JAVA] 사용자 정의 예외 (0) | 2024.07.25 |
[JAVA] 2차원 배열 (0) | 2024.07.25 |
[JAVA] 예외처리 try-catch (+예외던지기 throw, throws) (0) | 2024.07.24 |