https://velog.io/@ychxexn/Collections.emptyList-vs-new-ArrayList Collections.emptyList() vs new ArrayList() List를 반환하는 로직을 작성하기 위해서 우리에게는 두 가지 선택지가 있다. velog.io List.of() vs Arrays.asList() vs Collections.unmodifiableList() (tistory.com) List.of() vs Arrays.asList() vs Collections.unmodifiableList() 불변 리스트를 만들기 위해서 나는 주로 Arrays.asList를 사용해왔다. 자바에는 불변 리스트를 만드는 방법이 여러가진데, 이들의 차이점은 무엇일까? 1. 셋 다 불변 ..
일급 컬렉션이란?컬렉션을 포함한 클래스가 다른 멤버 변수 없이 단 하나의 컬렉션만 멤버 변수로 가지는 것즉,컬렉션 (Collection) 을 포장하여 그 자체를 하나의 클래스로 만드는 것을 말한다.비즈니스 로직상에서 사용되는 데이터에 대한 유효성 검사비즈니스 규칙 적용 등내부에서 캡슐화하여 관리할 수 있게됨. 일급 컬렉션 예시public class LottoNumbers { private final Set numbers; public LottoNumbers(Set numbers) { if (numbers == null || numbers.size() != 6 || !numbers.stream().allMatch(num -> 1 PayType.isNaverPay(pay.getPayType())); } pu..
BigDecimal.divide() 메서드 사용시반올림 모드를 지정하지 않는다면, 나눗셈의 결과가 무한소수 인 경우 ArithmeticException 이 발생할 수 있다.BigDecimal 은 기본적으로 정확한 값을 요하는데, 예를 들어 1 / 3 같은 계산을 BigDecimal 로 계산하려고 하는 경우, 0.3333333…. 으로 무한한 소수가 됨. 그래서 특정한 반올림모드가 필요함. API reference for Java Platform, Standard EditionEach rounding mode description includes a table listing how different two-digit decimal values would round to a one digit decimal ..
변수 사용시 private final x = 100; 한번 초기화되는 경우 값을 변경할 수 없다. 변경되지 않는 상수를 정의가능 VO 나 엔티티의 경우 수정되지 않아야하는 경우가 대부분이기에 final 키워드를 변수에 많이 사용한다라고 생각할수있지만, VO 나 엔티티는 거의 final 키워드의 사용을 못한다. 엔티티의 경우 지연로딩이 존재하는데, 프록시 객체를 생성 -> 프록시 객체에서 리플렉션 API 수행 리플렉션 수행시 -> 기본 생성자와 setter 가 필요한 상황 하지만 final 은 기본적으로 setter 를 사용할 수 없음. VO 의 경우에는 로직에 따라 초기화 시점에 , 애초에 모든 객체나 데이터를 들고오지 못하는 경우가 있기에, 사용하기 까다롭다.. 메서드에 사용되는 경우 public fi..