[자바 프로그래밍] 람다

2024. 7. 11. 17:28·CNU SW 아카데미/2주차

# Lambda Expression

  • Lambda Expression은 메소드를 하나의 식(expresson)으로 표현할 수 있도록 하여, 함수를 간결하고 명확한 식으로 표현할 수 있게 해주는 Java의 함수형 언어 지원이다.

 

 

# Funcational Interface

  • 하나의 abstract method를 가지고 있는 인터페이스
    • SAM(Single Abstract Method) 인터페이스
  • @FunctionalInterface 어노테이션이 적용될 수 있는 Target 인터페이스
  • Java에서 함수를 객체처럼 다를 수 있도록 함
@FunctionalInterface
public interface BinaryOp {
    public int apply(int left, int right);
}

 

 

 

 

# 메서드 참조

  • Lambda Expression을 단순하게 만들어주는 구문
  • Lambda Expression이 단 하나의 메소드만을 호출하는 경우에 사용
    • 해당 Lambda Expression에서 불필요한 parameter를 제거하고 사용할 수 있음
    • 불필요한 parameter를 제거하고 :: 기호를 사용하여 표현
public interface BinaryOp {
    public int apply(int i, int j);
}

class Calc {
    public static int add(int i, int j) {
        return i + j;
    }

    public int mult(int i, int j) {
        return i * j;
    }
}

class Test {
    public static void main(String[] args) {
        BinaryOp adder = Calc::add;
        BinaryOp multer = new Calc()::mult;
        System.out.println(adder.apply(1, 2));
        System.out.println(multer.apply(2, 3));
    }
}

 

메소드 참조(Method Reference)는 Lambda Expression이 단 하나의 메소드만을 호출하는 경우에 해당 Lambda Expression에서 불필요한 parameter를 제거하고 사용할 수 있도록 해 준다.

 

메소드 참조를 사용하면 불필요한 파라미터를 제거하고 :: 를 사용하여 표현할 수 있다.

 

 

 

# Annotation

  • 프로그램을 구성하는 직접적인 코드가 아님
  • 프로그램 작성에 도움을 주거나 이에 필요한 기능을 제공
    • 컴파일러에 기능 제공
    • 도구 확장 기능
    • 실시간 처리
  • 관점 지향 프로그래밍(AOP)의 Java 구현

 

일반적인 어노테이션 사용

JavaDoc을 사용하여 프로그램을 설명하는 HTML 문서를 만들기 위해 주석을 사용한다. JavaDoc에서는 설명이 필요한 변수, 메소드, 클래스 등의 요소에 '/**' 으로 시작하는 여러 줄 주석을 표시하고, 주석에 어노테이션을 추가하여 응용 프로그램을 추가하여 응용 프로그램을 설명하는 HTML 문서를 생성하여 공유할 수 있다.

/**
 * @author NHN Academy
 * @version 1.0 2022-03-01
 */
public class Hello {
    /**
     * @param args 프로그램이 실행될 때 주어지는 인자값이 포함된 배열
     */
    public static void main(String args[]) {
        System.out.println("Hello, Worlds!");
    }
}

 

 

 

 

 

# 디자인 패턴

## 디자인 패턴의 요소

### 구조 패턴

  • 어댑터(Adapter) 패턴
  • 브리지(Bridge) 패턴
  • 컴포지트(Composit) 패턴
  • 데코데레이터(Decorator) 패턴
  • 퍼사드(Façade) 패턴
  • 플라이웨이트(Flyweight) 패턴
  • 프록시(Proxy) 패턴

 

### 행위 패턴

  • 책임 체인(Chain of Responsibility) 패턴
  • 커맨드(Command) 패턴
  • 인터프리터(Interpreter) 패턴
  • 반복자(Iterator) 패턴
  • 중재자(Mediator) 패턴
  • 메멘토(Memento) 패턴
  • 상태(State) 패턴
  • 전략(Strategy) 패턴
  • 템플릿 메소드(Template Method) 패턴
  • 비지터(Visitor) 패턴

 

### 생성 패턴

  • 추상 팩토리
  • 빌더
  • 팩토리 메서드
  • 프로토타입
  • 싱글턴

 

 

 

## 싱글턴 패턴

  • 이름
    • 싱글턴(Singleton) 패턴
  • 문제
    • 어떤 클래스의 경우 정확히 하나의 인스턴스만을 가지게 하는 것이 중요하다 (예: 프린터 스풀)
    • 클래스의 인스턴스를 하나만 만들고, 이 인스턴스에 쉽게 접근할 수 있도록 만들 수 있어야 한다.
  • 해법
    • 클래스 자체가 자신의 유일한 인스턴스로의 접근을 자체적으로 관리하도록 설계한다. 이 클래스는 자신 말고는 다른 인스턴스가 생성될 수 없음을 보증할 수 있고, 클래스 자체가 인스턴스에 대한 접근 방식을 제공하도록 할 수 있다.
  • 활용
    • 클래스의 인스턴스가 오직 하나임을 보장하며, 정의된 접근 방식에 의해서만 접근해야 할 때
    • 유일하게 존재하는 인스턴스가 상속에 의해 확장되어야 할 때
  • 구조

 

'CNU SW 아카데미 > 2주차' 카테고리의 다른 글

[자바 프로그래밍] 디자인 패턴 심화  (0) 2024.07.12
[자바 프로그래밍] 제네릭  (1) 2024.07.10
[자바 프로그래밍] 클래스  (1) 2024.07.09
[자바 프로그래밍] 값 타입 vs 참조 타입  (1) 2024.07.08
'CNU SW 아카데미/2주차' 카테고리의 다른 글
  • [자바 프로그래밍] 디자인 패턴 심화
  • [자바 프로그래밍] 제네릭
  • [자바 프로그래밍] 클래스
  • [자바 프로그래밍] 값 타입 vs 참조 타입
하가네
하가네
  • 하가네
    하 렌
    하가네
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Computer Science (23)
        • 운영체제 (7)
        • 데이터통신 (6)
        • 자료구조 (4)
        • 논리회로 (0)
        • 확률 및 통계 (0)
        • 데이터베이스 (2)
        • AI소프트웨어 (3)
        • 컴퓨터네트워크 (1)
      • Language (0)
        • Java (0)
      • Framework (8)
        • Spring (8)
      • Tips (2)
        • 터미널 명령어 (1)
        • 우분투 명령어 에러 (1)
      • SSA (7)
        • Front (1)
        • Back (5)
        • DB (0)
        • 기획 (1)
      • 우아한테크코스 (0)
        • 7기 프리코스 (0)
      • CNU SW 아카데미 (42)
        • 1주차 (5)
        • 2주차 (5)
        • 3주차 (2)
        • 4주차 (1)
        • 5주차 (3)
        • 6주차 (2)
        • 7주차 (0)
        • 8주차 (1)
        • 9주차 (14)
        • 10주차 (0)
        • 11주차 (1)
        • 12주차 (0)
        • 13주차 (2)
        • 14주차 (2)
        • 15주차(최종 프로젝트) (3)
        • 최종 프로젝트 이후 (1)
      • 모각코 (6)
        • 2023 동계 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.
하가네
[자바 프로그래밍] 람다
상단으로

티스토리툴바