들어가기 전 이 글은 인프런 백기선님의 이펙티브 자바를 복습하며 작성한 글입니다. 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라. 아이템 15의 핵심정리는 다음과 같다. 아래에서는 필요한 내용들을 잘 정리해보고자 한다. 구현과 API를 분리하는 '정보 은닉'의 장점 클래스와 인터페이스의 접근 제한자 사용 원칙 멤버(필드, 메서드, 중첩 클래스/인터페이스)의 접근 제한자 원칙 핵심 정리1: 구현과 API를 분리하는 "정보 은닉"의 장점 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. API를 기준으로 개발하기 때문에 API가 다 개발될 때까지 기다리지 않고 나머지를 구현하면 된다. 시스템 관리 비용을 낮춘다. 컴포넌트를 더욱 빨리 파악할 수 있기 때문이다. 공개된 AP..
들어가기 전 이 글은 인프런 백기선님의 이펙티브 자바 강의를 복습하며 작성한 글입니다. 완벽 공략 p42. Finalizer 공격 (완벽공략 22) p43. AutoClosable (완벽공략 23) p45. 정적이 아닌 중첩 클래스는 자동으로 바깥 객체의 참조를 갖는다 앞에서 static으로 만들라고 했는데, 중첩 클래스로 만드는 경우.. 이해 잘 못할 수 있음. p45. 람다 역시 바깥 객체의 참조를 갖기 쉽다. 아이템 8에서 짚고 넘어가면 좋을 부분은 위의 4가지다. 이 글에서는 위의 4가지를 복습한 내용을 작성한다. p45. static이 아닌 중첩 클래스는 자동으로 바깥 객체의 참조를 갖는다. OuterClass 내부에 Inner Class가 선언된 구조를 살펴보자. 이 때, InnerClass가..
들어가기 전 이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다. 아이템8 핵심 정리 Finalizer, Cleaner는 GC가 일어날 때 수행된다. GC가 언제 일어날지 모르기 때문에 Finalizer와 Cleaner는 즉시 수행된다는 보장이 없다. GC가 일어나도, Finalizer와 Cleaner는 정상동작 하지 않을 수 있다. finalizer 동작 중에 예외가 발생하면 정리 작업이 처리되지 않을 수도 있다. finalizer와 cleaner는 심각한 성능 문제가 있다. finalizer는 보안 문제가 있다. Finalizer Attck이 가능하다. 반납할 자원이 있는 클래스는 AutoClosable을 구현하고 클라이언트에서 close()를 호출하거나 try-with-resource를 사용..
들어가기 전 이 글은 인프런 백기선님의 이펙티브 자바를 공부하며 작성한 글입니다. 핵심정리 try-finally는 더 이상 최선의 방법이 아니다. (자바 7부터) try-with-resources를 사용하라 resources는 closable 인터페이스가 구현된 경우 자동으로 닫아준다. 가독성이 증가한다. 만들어지는 예외 정보도 훨씬 유용하다. try~finally에서 finally절은 항상 실행되기 때문에 그 안에서 자원을 반납했다. 좋은 방법이지만, 자바 8 이상에서는 Try With Resources가 최선의 방법이 된다. Try ~ finally 코드 살펴보기 : 코드 9-1 기존에는 try - finally 구문을 이용해서 자원을 회수해왔다. 현재 수준에서 이 코드는 문제가 없다. 예외가 발생하..
들어가기 전 이 글은 인프런 백기선님의 이펙티브 자바 강의를 복습하며 작성한 글입니다. 아이템 14. Comparable을 구현할지 고민하라. 핵심 정리 : CompareTo 규약 CompareTo는 Objects.equals에 더해서 순서까지 비교할 수 있으며 Generic을 지원한다. 자기 자신(this)이 compartTo에 전달된 객체보다 작으면 음수, 같으면 0, 그면 양수를 리턴한다. 특정 값(-1, 1)이 나오길 기대하는 것이 아니라 양수, 음수인 것을 기대하고 만들어야 한다. 반사성, 대칭성, 추이성을 만족해야 한다. 반드시 따라야 하는 것은 아니지만 x.compareTo(y) == 0이라면 x.equals(y)가 true여야 한다. 소수점 자리인 경우에는 이 방식을 따르지 못할 수 있음...