Java static과 클래스 로드 및 초기화
2022. 8. 28. 23:35
Java
서론 이번에 GOF 디자인 패턴을 공부하면서 기선님 강의를 봤는데 챕터1인 싱글톤 패턴 부터 막혔다. static을 몰랐기 떄문이다. 그래서 이번 기회에 조금 더 정리할 수 있는 기회가 되었다. 예전에도 헷갈렸던 것 같다. 이번 기회에 조금 더 알아가는 기회가 될 것 같다. 내가 이해한 static은 공유 자원 + 클래스 로드 시 같이 메모리에 올라가는 것이었다. 예전에도 공유라는 것에 현혹 되었던 적이 있는데 다시 초기화가 된 것 같다. 조금 더 알아 보자. 싱글톤 구현하기 강의에서 싱글톤 구현하는 방법을 몇 가지 배웠다. 기존에 알고 있는 방식은 잠재된 버그가 있다는 것을 알게 되었다. 코드를 살펴 보자. 멀티 쓰레드 환경에서 안전하지 않는 코드 public class Settings { privat..
Arrays의 asList가 뭐고 왜 써야 할까?
2021. 10. 8. 01:15
Java
Arrays의 asList java8 API 문서에 보면 아래와 같이 나와 있습니다. 고정된 배열을 반환한다. 읽기 전용 배열을 반환한다 그래서 어떻게 사용하는 걸까? 아래와 같이 두 가지 방법으로 사용이 가능 합니다. 어떤 특징이 있을까? add, remove가 불가능하다(읽기 전용). AstractList 라는 추상 클래스의 add, remove를 상속받아 사용합니다. 아래 소스를 보면 불가능한 이유를 알 수 있습니다. UnsupportedOperationException 를 예외로 던지기 때문 입니다. 변경은 가능하다. AbstractList 에서 set 메서드는 add, remove와 동일한 예외를 발생 시키지만, AbstractList 를 상속받아 set 메서드를 오버라이드 하기 때문에 변경이 ..