Effective Java

Effective Java

[아이템 50] 적시에 방어적 복사본을 만들라

책은 방어적 복사의 중요성에 대해 이야기한다. 방어적 복사에 앞서 깊은 복사와 얕은 복사를 알고 가야한다. 깊은 복사 객체 복사 시, 해당 객체와 인스턴스 변수까지 복사한다. 전부 복사해서 새 주소에 담는 ( 주소값은 달라진다) 즉 원본과 복사 객체는 독립적인 별개의 객체이되, 내부 정보는 동일한 상태로 초기화 하는 것. @Override public Object clone() throws CloneNotSupportedException{ return super.clone(); } 보통 위의 clone 메소드로 복사 하게된다. public static void main(String[] args) { try { // 원본 객체 생성 Person originalPerson = new Person("Alice..

Effective Java

[아이템 18] 상속보다는 컴포지션을 사용하라

😇 Effective java Item 18 이 책에서의 ‘상속'은 (클래스가 다른 클래스를 확장하는) 구현 상속을 말한다. 이번 아이템 에서 논하는 문제는 (클래스가 인터페이스를 구현하거나 인터페이스가 다른 인터폐이스를확장하는) 인터폐이스상속과는무관하다. 메서드 호출과 달리 상속은 캠슐화를 깨뜨린다. 변형된 HashSet : 원소 수 저장 , 접근자 메서드 추가 됨. pubUc Class InstrumentedHashSet extends Hashset { // 추가된 원소의 수 private int addCount = 0; public InstrumentedHashSet() { } pubUc InstrumentedHashset(int initCap, float 10adFactor) { super(ini..

Effective Java

[아이템 13] clone 재정의는 주의해서 진행하라

clone은 객체를 복사한다. Cloneable 구현 예시 public class TestCloneDto implements Cloneable { private String name; private String email; public String toString () { return " name : " + name + " email : " + email; } public TestCloneDto(String name, String email) { this.name = name; this.email = email; } @Override protected TestCloneDto clone() throws CloneNotSupportedException { return (TestCloneDto) super.c..

Effective Java

[ 아이템 12 ] toString

업무 중에 습관적으로 toString을 쓰곤 했다. 객체의 값을 확인하거나. 아무생각없이 리스트의 목록을 값을 확인해볼때에도, 디버깅 할때에도 로그를 toString으로 쓰면서 디버깅 해본적도 꽤많았다. Object 의 기본 toString 메서드는 상당히 불편하다. 리액트로 개발을 할 때에는 자바스크립트에서 대충 console.log를 찍으며, 디버깅을 해도 값을 모두 확인해서 나름 편리하다? 라고 생각하며 개발을 했었기에, 다시 자바로 돌아와 개발 할 때에는 불편함을 더 많이 느꼈다. 앞 장인 equals 와 hashCode 아이템만큼의 중요성은 없지만 스스로 아무 생각없이 쓰던 함수이기에 정리해본다. 새로이 알게 된 내용은 다음과 같다. 사용자가 직접 호출하지 않더라도 java 어딘가에서 상당히 많..

girin_dev
'Effective Java' 카테고리의 글 목록