본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


Java(자바)

자바 함수형 프로그래밍

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2019. 4. 25.

 

 

자바스크립트에서의 함수형, Swift에서의 클로저 형태의 함수형 프로그래밍이 자바8.0에서 람다의 등장으로 인해서 가능하게 되었다.

인터페이스를 좀더 다양한 형태로 사용할 수 있게 해주는게 장점인 것 같다.

 

첫번째 예제코드는 함수형 인터페이스를 만드는 부분이다. 함수형을 구현할 구현부를 선언하는데...구현부로 쓸 추상메소드는 1개밖에 쓸 수 없다는 점이다.

지금 예제코드는 단순하게 String을 리턴하는 부분으로 작성되어 있으며, 기본메소드를 만들어서 해당 구현한 값이 잘 들어오는지 확인하였다.

@FunctionalInterface //함수형 선언
public interface Test {
    public abstract String run(); //구현부
    default void showMeResult(){
      System.out.println(run());
    }
}

아래 코드는 메인메소드 이다. 여기서 람다식을 활용해서 함수형 인터페이스에서 동작 할 행위와 값을 써 주었고, 아래 showMeResult를 통해서 구현한 기능이 작동하는지를 살펴 보았다. 물론 run 메소드를 실행하면 잘 동작하는지도 확인 가능하다.

public class TestMain {
  public static void main(String arg[]){
    Test test = ()->{  //람다 표현식
      System.out.println("Hello function! ");
      return "5 <- this is return value";  //리턴값
    };    
    test.showMeResult();  //인터페이스 기본 메소드 실행
  }
}

이처럼 함수형으로 작업을하면 협업을 하거나 기능을 분할해서 만들 때 좀 더 쉽게 로직을 만들수가 있고, 편리하게 꾸밀수가 있는 것 같다.

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글