람다 ( Lambda )
package lambda;
interface Test02{
public void test02();
}
public class Ex02 {
public static void main(String[] args) {
// 인터페이스 자체를 객체화 할 수 있다
// 인터페이스를 객체화 할 땐 메소드를 정의해줘야 한다
Test02 t = new Test02() {
@Override
public void test02() {
System.out.println("test 실행");
}
};
t.test02(); // test 실행 출력
System.out.println("--- 람다 ---");
// 람다식 사용
// () 의 의미는 Test02 의 메소드임을 의미
// -> 를 사용하여 () 메소드의 내용을 우측에 정의
// ★ 람다식을 사용할땐 무조건 메소드가 하나만 존재해야 한다 ★
Test02 t02 = () -> System.out.println("test실행222");
t02.test02(); // test실행222 출력
}
}
람다식 사용법
package lambda;
interface Test03{
public void test(int num, String msg);
}
public class Ex03 {
public static void main(String[] args) {
Test03 t = new Test03() {
@Override
public void test(int num, String msg) {
System.out.println("num : " + num);
System.out.println("msg : " + msg);
}
};
t.test(100, "안녕하세요");
// num : 100
// msg : 안녕하세요
System.out.println("--- 람다 ---");
// 람다식 사용
// 전달 받고자 하는 매개변수의 이름을 임의로 넣으면 됨
Test03 t02 = (n, s) -> {
System.out.println("n : " + n);
System.out.println("s : " + s);
};
t02.test(500, "연습");
// n : 500
// s : 연습
}
}
매개변수가 존재하는 인터페이스를 객체화할 때 람다식 사용법
package lambda;
interface Test04{
public void test();
}
class TestClass04{
// 인터페이스 객체를 변수로 받아 사용하는 메소드를 생성
public void TestClass(Test04 t) {
System.out.println("기능을 실행합니다!!!!!");
t.test();
}
}
public class Ex04 {
public static void main(String[] args) {
TestClass04 t01 = new TestClass04();
// 람다식을 사용하여 인터페이스 객체화
Test04 t04 = () -> System.out.println("test 실행됩니다");
// 매개변수로 인터페이스 객체를 필요로 하는 메소드를 실행
t01.TestClass(t04);
// 기능을 실행합니다!!!!!
// test 실행됩니다
// 객체를 외부에 생성하지 않고 한 코드 안에서만 사용한 뒤
// 버리는 경우 람다식을 사용해 간단하게 사용할 수 있다
t01.TestClass(() -> {System.out.println("t1111111 실행");});
// 기능을 실행합니다!!!!!
// t1111111 실행
// 위 문구 2줄 출력 후 생성되었던 인터페이스 객체는
// 다음 코드로 넘어가면서 소멸된다
}
}
람다식 사용 예시
( 인터페이스 객체를 매개변수로 요구하는 객체에 사용하는 경우 )
728x90
'국비지원_핀테크' 카테고리의 다른 글
14일차_ [java] 컬렉션 ( collection ), 객체 리스트 (0) | 2024.02.22 |
---|---|
14일차_ [java] 쓰레드 ( Thread ) (0) | 2024.02.22 |
13일차_ [java] 싱글톤 ( Singleton ) 패턴 (0) | 2024.02.21 |
13일차_ [java] 추상 클래스 ( Abstract ), 인터페이스 ( interface ) (0) | 2024.02.21 |
13일차_ [java] 업캐스팅 ( upcasting ), 다운캐스팅 ( downcasting ) (0) | 2024.02.21 |