퀭한눈 달팽이 2022. 12. 1. 21:01

 

2일차 Java 심화 내용

 

 

 

Interface : 백엔드, 프론트엔드 개발 코드가 서로 통신하는 접점. 동시 개발 가능.

interface Practice {
    // 상수
   (final/static : 지우라고뜸) 타입 상수명(대문자 convention) = 값;
    String HI = "Hi~";

    // 추상 메서드
    List<String> findAllName();

    // Default 메소드
    default 타입 메소드명(파라미터,...) {...}
    default void printHi() {
        System.out.println(HI);
    }

    // static 메소드
    static void printHi() {
        System.out.println(HI);
    }
}

Java 는 다중 상속이 지원 안되지만

Interface 는 다중 구현이 지원됌

     + 기본 메서드 추가하고 싶을때 default를 사용 

상수는 대문자 + '_' 의 조합으로 사용 

@a = 애노테이션

 

 

 

다형성 : overriding : Dynamic Dispatch

Promotion Memory 구조

자바는 Promotion으로 Upcasting된 객체의 메소드를 런타임 시점에서

오버라이딩된 메소드에 대한 호출이 확인된다. → Dynamic Method Dispatch → 실시간 다형성

 

 

 

람다 표현식 : 함수형 인터페이스를 간결하게 하나의 식으로 표현

 

 

 

익면 객체 :  

  • 사용 목적 : UI 이벤트 처리 객체 / 스레드 객체를 간편하게 생성하기 위해 많이 활용
  • 사용 용도 : 필드 / 로컬변수 의 초기값, 매개변수의 매개값으로 사용
  • 단독으로 생성 불가, 클래스 상속 or 인터페이스 구현해서 사용 가능 !
  • 재사용 목적이 아닌 1번만 사용 하려고 할 때 쓴다.
 

[Java] 익명 구현 클래스(익명 구현 객체)

안녕하세요~ 오늘은 지난 시간에 이어, 익명클래스(익명객체)에 대해서 알아보겠습니다. 지난번 글 : 2021.12.10 - [프로그래밍/Java] - [Java] 익명객체(익명클래스)란? (이 글 하나로 한방에 정리!) 지

limkydev.tistory.com

 

[Java] 익명 객체

멀티 스레드에 대해 공부를 하던 중, Runnable 익명 객체를 매개값으로 사용하면 코드를 절약할 수 있다는 말을 보았다. 익명 객체에 대해 대충은 알고 있었지만 까먹었던 부분도 있고, 정리가 잘

velog.io

 

 

 

 

Optional : NPE, null 값 반환시 오류 발생 해결을 위해 (메소드 반환 타입으로만)사용하며,

                  잘못 사용 시 코드 지저분, 의미 없는 동작, Side-Effect 유발이 많이 발생

                 객체 꺼내는 방법

Optional<String> opt = Optional.ofNullable("Optional은 Wrapper Class");

System.out.println(opt.get());

 

  •  NPE은 물론이고, NoSuchElementException이 발생함.
  • 잘못된 Optional 사용으로 새로운 문제들이 발생함.
  • 코드의 가독성을 파괴
  • 시간, 공간적 비용이 증가함

 

 

 

Steam : '데이터의 흐름’,배열이나 컬렉션에 담긴 데이터를 다룰 때, 반복문이나,

               iterator를 사용하면 코드가 길어지고, 가독성이 떨어진다.

               이 문제를 해결하기위해 Stream API 등장.

 

  • 생성하기 : 스트림 인스턴스 생성.
  • 가공하기 : 필터링(filtering) 및 맵핑(mapping) 등 원하는 결과를 만들어가는
                     중간 작업(intermediate operations).
  • 결과 만들기 : 최종적으로 결과를 만들어내는 작업(terminal operations)
전체 -> 맵핑 -> 필터링 1 -> 필터링 2 -> 결과 만들기 -> 결과물