본문 바로가기

java3

1. 생성자 대신 정적 팩터리 메서드를 고려하라 박싱 클래스: primitive 자료형을 wrapper 클래스의 객체로 만드는 과정을 의미, 언박싱은 그 반대를 의미한다. 박싱 클래스의 Boolean에는 primitive한 값을 wrapper 클래스로 바꿔주는 valueOf라는 정적 팩터리 메서드가 존재한다. public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 장점 1. 생성자가 이름을 가질 수 있다. 위의 정적 팩토리 메서드처럼 클라이언트는 생성자 말고도 정적 팩터리 메서드를 제공해 클래스를 생성할 수 있다. public class Order { private boolean prime; private boolean urgent; private Pro.. 2023. 2. 19.
함수형 프로그래밍 프로그래밍 패러다임은 크게 아래와 같다. 1. 명령형 프로그래밍: 무엇을 할 것인지 나타내기보다 어떻게 할 건지를 설명하는 방식, 원하는 결과를 얻기 위해 특정 단계를 설명하는 코드 라인을 사용 - 절차지향 프로그래밍: 수행되어야 할 순차적인 처리 과정을 포함하는 방식(C) - 객체지향 프로그래밍: 객체들의 집합으로 프로그램의 상호작용을 표현(C++, JAVA) 2. 선언형 프로그래밍: 어떻게 할건지 나타내기보다 무엇을 할 건지 설명하는 방식, 흐름 제어를 추상화하고 데이터 흐름을 설명하는 코드 라인을 사용 - 함수형 프로그래밍: 순수 함수를 조합하고 소프트웨어를 만드는 방식(하스켈, 리스프) 코드로 이해하는게 제일 쉽다고 생각한다. 아래 코드를 보면 import java.util.Arrays; impo.. 2021. 12. 15.
또다시 Optional 스프링보다 자바에 대한 공부가 더 필요하다는 생각이 든다. 생 객체가 아니라 Optional을 통해서 JPA의 값을 받으면서 서비스 단에서 null처리를 하면서 든 생각이 이런식으로 사용하면 객체를 사용하지 않을 이유가 없는데 왜 굳이 Optional을 쓰고 있을까? 였고 결과적으로 Spring Data JPA Repository의 메서드는 null을 반환하는 것이 아닌 비어있는 컬렉션을 반환해주므로 굳이 Optional을 이용해서 감쌀 필요가 없었다. Optional은 이전 포스팅에서도 말했듯이 자바8 에서 람다, 스트림 등과 함께 새로 나온 문법으로 null을 처리하는데 유용하게 쓰기 위한 하나의 포장지다. return user.getAddress() 위의 코드에서 user에 address가 없다면 .. 2021. 12. 1.