ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 람다식
    컴퓨터/Java 2019. 9. 4. 16:20

    -람다식이란

    익명함수(anonymous function)를 이용해서 익명 객체를 생성하기 위한 식

    인터페이스에 선언만 해놓고 따로 클래스 구현을 하지 않아도 람다식으로 사용가능

     

    과거 C와 같은 함수 지향 프로그래밍,

    - 람다식 구현

    package lec11Pjt001;
    
    public interface LambdaInterface1 {
    	public void method(String s1, String s2, String s3);
    }
    package lec11Pjt001;
    
    public interface LambdaInterface2 {
    	public void method(String s1);
    }

    MainClass.java

    (질문)

    왜 인터페이스 객체에 바로 람다식을 대입하는 걸까.

    그리고 이 객체.method(인자)로 사용한다.. 마치 객체.method에 람다식을 대입한 것처럼.. 모르겠다!

    package lec11Pjt001;
    
    public class MainClass {
    	public static void main(String[] args) {
    		
    		// 매개변수와 실행문만으로 작성한다(접근자, 반환형, return 키워드 생략)
    		LambdaInterface1 li1 = (String s1, String s2, String s3) -> { System.out.println(s1 + " " + s2 + " " + s3); };
    		li1.method("Hello", "java", "World");
    		
    		System.out.println();
    		
    		// 매개변수가 1개이거나 타입이 같을 때, 타입을 생략할 수 있다.
    		LambdaInterface2 li2 = (s1) -> {System.out.println(s1);};
    		li2.method("Hello");
    		
    		//실행문이 1개일 때, '{}'를 생략할 수 있다.
    		LambdaInterface2 li3 = (s1) -> System.out.println(s1);
    		
    		// 매개변수와 실행문이 1개일 때, '()'와 '{}'를 생략할 수 있다.
    		LambdaInterface2 li4 = s1 -> System.out.println(s1);
    		li4.method("Hello");
    		
    		// 매개변수가 없을 때 '()'만 작성한다.
    		LambdaInterface3 li5 = () -> system.out.println("no parameter");
    		li5.method();
    		
    		//반환값이 있는 경우.... 화살표함수 비슷해보인다!
    		LambdaInterface4 li6 = (x,y) -> {
    			int result = x+y;
    			return result;
    		};
    		System.out.printf("li6.method(10,20, args) : %d\n", li6.method(10,20));
    		
    		li6 = (x,y) -> {
    			int result = x*y;
    			return result;
    		};
    		System.out.printf("li6.method(10,20) : %d\n", li6.method(10,20));
    		
    		li6 = (x,y) -> {
    			int result = x-y;
    			return result;
    		};
    		System.out.printf("li6.method(10,20) : %d\n", li6.method(10,20));
    	}
    }
    

    '컴퓨터 > Java' 카테고리의 다른 글

    입력과 출력  (0) 2019.09.04
    예외처리  (0) 2019.09.04
    클래스 05: 추상클래스  (0) 2019.09.04
    클래스 04: 인터페이스  (0) 2019.09.04
    클래스 03: 내부 클래스와 익명 클래스  (0) 2019.09.04

    댓글

Designed by Tistory.