람다식

자바에서 함수형언어를 지원해주는 문법 

*람다식은 주로 인터페이스와 연결되어서 사용

 

다양한 형식의 람다식

(1) 기본 람다식

(2) 파라미터와 리턴타입이 없는 경우

(3) 리턴타입이 있는 경우

 

예시) 

package j210129.sub;
//람다식은 주로 인터페이스와 연결되어서 사용
interface Xyz{
	int x=8;//자동으로 상수로 인식된다(public static final int x=8;)
	public void a(int x, int y);
	//public void b();
}

public class LamTest2 implements Xyz {
	@Override
	public void a(int x,int y) {
		// TODO Auto-generated method stub
		
		System.out.println("부모로부터 받아서 오버라이딩");
	}
	public void b() {};//오버라이딩 하지 않아도 되면 형태라도 적어두기

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//방법2. 익명클래스{추상메소드를 오버라이딩하여 호출}
		Xyz abc = new Xyz() {	
			public void a(int x,int y) {
				System.out.println("익명클래스를 이용한 메소드호출방법"+x*y);
			}
			public void b() {
				System.out.println("오버라이딩 순서는 중요x");
			}
		};
		abc.a(6,5);
		
		//방법3. 인터페이스 객체를 얻어와서 메소드를 호출-> 람다함수를 이용
		//형식) 인터페이스자료형 객체명=(매개변수명,,,)->{처리할 문장}
		//문장이 한줄일때는 {}생략가능, 메소드명은 생략
		Xyz abc2 = (int a,int b)->System.out.println("람다를 이용=>"+(a+b));
		//인터페이스에서 람다표현식을 사용하고 싶다면 추상메소드가 하나만 존재해야한다.
		abc2.a(6, 5);
		/*
		 * 인터페이스 객체를 얻어올때 메소드의 반환형,메소드명 생략 가능
		 * 추상메소드를 오버라이딩->일반메소드를 만들때 메소드명을 생략가능하다
		 * */

	}
}

 

 

 

+ Recent posts