25 TIL
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으로 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 -> 결과 만들기 -> 결과물