본문 바로가기

Java/Java5

Java 참조 좀 더 이해하기 쉬운 참고 자료 정리 Java 8 Lambda Expression 개념 및 구조 이펙티브 자바 한 번 읽고 ➡️ [스프링으로 시작하는 리액티브 프로그래밍] chapter 4 2023. 10. 8.
Collections.emptyList()와 Collections.EMPTY_LIST의 차이 개발을 하다 보면 return type은 정해뒀지만, 어느것도 return할 필요가 없는 상황이 생긴다. 단순하게 null을 반환할 수도 있겠지만 null로 인한 오류 발생 가능성도 있고, 후에 null 체크를 해줘야 한다는 점에서 null을 리턴하는 것엔 주의가 필요하다. 대신 빈 객체를 return하는 것이 좋은데, Collections는 아래의 빈 컬렉션을 return하는 메서드를 제공한다. Collections.emptyList(); Collections.emptySet(); Collections.emptyMap(); 그런데, 메서드 뿐만 아니라 상수 또한 제공하고 있다. Collections.EMPTY_LIST; Collections.EMPTY_SET; Collections.EMPTY_MAP; .. 2023. 4. 27.
Java 기초 :: JVM과 컴파일 컴퓨터 언어와 사람이 쓰는 언어 컴퓨터는 사람이 ‘가', ‘나', ‘다'를 쓰는 것과는 다르게 ‘0’과 ‘1’로만 명령을 이해하고 실행한다. 이 차이점으로 컴퓨터가 쓰는 언어와 사람이 쓰는 언어를 기계 중심 언어인 저급언어, 사용자 중심 언어인 고급언어라고 부른다. 컴파일과 링크 사용자가 고급 언어로 프로그래밍을 하면 기계가 이해할 수 있도록 기계어로 번역하는 과정이 필요한데, 이를 컴파일이라고 한다. 사용자가 이해하는 언어로 작성된 코드를 원시 코드, 기계가 이해하는 언어로 번역한 것을 목적 코드(목적 파일)라고 한다. 따라서 컴파일을 원시코드를 목적 코드로 번역하는 것이라고도 표현할 수 있다. 컴파일 한 목적 파일을 실행 파일로 바꾸는 것을 링크라고 말하는데, 컴파일과 링크를 수행하는 것을 컴파일러라.. 2022. 5. 9.
Builder Pattern과 lombok @Builder Builder는 주로 lombok의 @Builder 어노테이션을 이용해 쉽게 사용해서 직접 구현해본 적은 한 번뿐이었다. 이펙티브 자바를 읽다 Builder 패턴이 나온 김에 예제를 따라서 직접 구현해보기로 했다. 예제 클래스명은 Coffee로 바꿔서 구현했다. 구현 public class Coffee { private String bean; private boolean water; private boolean syrup; public Coffee(Builder builder) { bean = builder.bean; water = builder.water; syrup = builder.syrup; } public static class Builder { //필수 매개변수 private String be.. 2022. 4. 10.