EffectiveJava [Item4] 인스턴스화를 막으려거든 private 생성자를 사용하라 _아직 Item4까지 밖에 보지 않았지만 정말 개발을 하면서 신경쓰지 않았던 부분에 대해서 다시한번 반성하고 배워가게 되는 책인것 같습니다. Item4 같은 경우는 간단하게 보고 넘어가도 될듯 하여 짧게 포스팅을 하려고 합니다 . 자동으로 생성된 생성자가 아닌 명시적으로 만든 생성자가 private이기 때문에 클래스의 외부에서는 접근 불가능합니다. 따라서 어떤 환경에서도 클래스가 인스턴스화 ... EffectiveJavaJava개발자developerEffectiveJava Use Dependency Injection! 각 클래스간에 의존성을 framework 수준에서 관리하게 해주는 프레임워크의 근간은 이번에 소개할 의존 객체 주입이라는 간단하면서도 강력한 방법입니다. 객체 지향 프로그래밍을 하다보면 클래스 간에 서로 의존성이 생길 수 밖에 없습니다. 그리고 대부분 처음에는 클래스의 생성자에서 맴버 변수에 new 키워드를 통해서 객체를 생성해서 할당하는 방식으로 객체간에 의존성을 만들어가게 됩니다. B 클... EffectiveJavaJavadiEffectiveJava [Item11] equals를 제정의하려거든 hashCode도 재정의하라 equals에 사용되는 핵심 필드가 변경되지 않았다면 , 실행되는 동안 hashCode메서드는 몇번을 호출해도 항상 같은 hashCode값을 반환햐야한다. equals가 두 객체를 같다고 판단하였다면 두 객체가 가지고있는 hashCode는 같은 값을 반환해야 한다. equals가 두 객체를 다르다고 했더라도, 두 객체의 hashCode가 서로 다른 값을 반환해야할 필요는 없다. 즉, 논리적으... EffectiveJavaJavaequalshashCode()EffectiveJava [Java] 불필요한 객체 생성을 피하라 불필요한 객체 생성을 피하라 똑같은 기능의 객체를 매번 생성하기 보다는 객체 하나를 재사용하는 것이 나을 때가 많다. 이 문장이 반복문이나 자주 호출되는 메소드 안에 있다면 쓸데없는 String 인스턴스가 수백만개 만들어 질 수 있다. 이와 같이 코드를 바꾸면 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용한다. 또한 이 방식을 사용한다면 같은 가상 머신 안에서 이와 ... EffectiveJavaJavaEffectiveJava [Item13] clone 재정의는 주의해서 진행하라. Cloneable 는 복제해도 되는 클래스라는것을 명시하는 용도의 인터페이스 이지만, clone메서드가 선언된 곳이 Cloneable 클래스가 아닌 Object 클래스이다 또한 clone 메서드는 protected로 되어있다. 그래서 외부 객체에서 clone 메서드를 호출할 수 없다. ( 리플렉션을 사용하면되지만 반드시 성공하는 것은 아니다 ) 하지만, 이런 문제가 있더라도 실제로 Clone... EffectiveJavaJava개발자developerEffectiveJava Effective Java 독서 노트 1 객체 만들기 및 제거 정적 공장 방법은 명칭이 있어 되돌아오는 대상의 특성을 더욱 잘 설명할 수 있다.예를 들어 같은 유형의 두 가지 구조 방법, 방법의 매개 변수 유형은 같지만 순서가 다르기 때문에 사용자는 두 구조기의 차이를 글자에서 구분할 수 없다 인터페이스에 정적 방법이 있을 수 없기 때문에 인터페이스Types의 정적 공장 방법은 Types라는 실례화 클래스에 놓여 있다.(Collection,Collect... EffectiveJava Consider Builder if parameter so much in constructor 매개변수가 많을 경우, 프로그래머들은 점층적 생성자 패턴(telescoping constructor pattern)을 즐겨 사용했다. 이 클래스의 인스턴스를 만들려면 원하는 매개변수를 모두 포함한 생성자 중 가장 짧은 것을 골라 호출하면 된다. 하지만 코드 자체만 봐도 너무 많은 코드가 작성되고 성능적으로도 call stack이 불필요하게 많이 쌓임을 느낄 수 있습니다. 이런 선택 매개변수가... JavaEffectiveJavaEffectiveJava [Java] 인스턴스화를 막으려거든 private 생성자를 사용하라 item4. 인스턴스화를 막으려거든 private 생성자를 사용하라 Effective Java 공부 인스턴스로 만들어 쓰려고 설계하지 않은 클래스들이 있다. (ex: 정적 멤버만 담은 정적 유틸리티 클래스) 이 때 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어준다. 즉 매개변수를 받지 않는 public 생성자가 만들어지면 사용자는 이것이 자동 생성된 것인지 구분할 수 없다... EffectiveJavaJavaEffectiveJava Effective 자바 - 사유 구조 기 강화 단일 속성 최 적 화 된 솔 루 션 매 거 C 코드 를 쓸 때 우 리 는 간단 한 논 리 를 매크로 에 정의 하 는 것 을 배 웠 다.이렇게 하면 컴 파일 러 가 컴 파일 할 때 이 매크로 를 사용 하 는 곳 을 매크로 코드 로 직접 교체 하 는 것 이 장점 이다.이렇게 하면 더 이상 호출 방법 과 같은 스 택 을 쌓 고 스 택 을 나 가 인삼 을 전달 할 필요 가 없다.성능 이 향상 되 었 다.내 연 함수 의 처리 방식 은 매크로 ... 디자인 모드Effective자바 독서 노트EffectiveJava독서 노트 와 지식 총화
[Item4] 인스턴스화를 막으려거든 private 생성자를 사용하라 _아직 Item4까지 밖에 보지 않았지만 정말 개발을 하면서 신경쓰지 않았던 부분에 대해서 다시한번 반성하고 배워가게 되는 책인것 같습니다. Item4 같은 경우는 간단하게 보고 넘어가도 될듯 하여 짧게 포스팅을 하려고 합니다 . 자동으로 생성된 생성자가 아닌 명시적으로 만든 생성자가 private이기 때문에 클래스의 외부에서는 접근 불가능합니다. 따라서 어떤 환경에서도 클래스가 인스턴스화 ... EffectiveJavaJava개발자developerEffectiveJava Use Dependency Injection! 각 클래스간에 의존성을 framework 수준에서 관리하게 해주는 프레임워크의 근간은 이번에 소개할 의존 객체 주입이라는 간단하면서도 강력한 방법입니다. 객체 지향 프로그래밍을 하다보면 클래스 간에 서로 의존성이 생길 수 밖에 없습니다. 그리고 대부분 처음에는 클래스의 생성자에서 맴버 변수에 new 키워드를 통해서 객체를 생성해서 할당하는 방식으로 객체간에 의존성을 만들어가게 됩니다. B 클... EffectiveJavaJavadiEffectiveJava [Item11] equals를 제정의하려거든 hashCode도 재정의하라 equals에 사용되는 핵심 필드가 변경되지 않았다면 , 실행되는 동안 hashCode메서드는 몇번을 호출해도 항상 같은 hashCode값을 반환햐야한다. equals가 두 객체를 같다고 판단하였다면 두 객체가 가지고있는 hashCode는 같은 값을 반환해야 한다. equals가 두 객체를 다르다고 했더라도, 두 객체의 hashCode가 서로 다른 값을 반환해야할 필요는 없다. 즉, 논리적으... EffectiveJavaJavaequalshashCode()EffectiveJava [Java] 불필요한 객체 생성을 피하라 불필요한 객체 생성을 피하라 똑같은 기능의 객체를 매번 생성하기 보다는 객체 하나를 재사용하는 것이 나을 때가 많다. 이 문장이 반복문이나 자주 호출되는 메소드 안에 있다면 쓸데없는 String 인스턴스가 수백만개 만들어 질 수 있다. 이와 같이 코드를 바꾸면 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용한다. 또한 이 방식을 사용한다면 같은 가상 머신 안에서 이와 ... EffectiveJavaJavaEffectiveJava [Item13] clone 재정의는 주의해서 진행하라. Cloneable 는 복제해도 되는 클래스라는것을 명시하는 용도의 인터페이스 이지만, clone메서드가 선언된 곳이 Cloneable 클래스가 아닌 Object 클래스이다 또한 clone 메서드는 protected로 되어있다. 그래서 외부 객체에서 clone 메서드를 호출할 수 없다. ( 리플렉션을 사용하면되지만 반드시 성공하는 것은 아니다 ) 하지만, 이런 문제가 있더라도 실제로 Clone... EffectiveJavaJava개발자developerEffectiveJava Effective Java 독서 노트 1 객체 만들기 및 제거 정적 공장 방법은 명칭이 있어 되돌아오는 대상의 특성을 더욱 잘 설명할 수 있다.예를 들어 같은 유형의 두 가지 구조 방법, 방법의 매개 변수 유형은 같지만 순서가 다르기 때문에 사용자는 두 구조기의 차이를 글자에서 구분할 수 없다 인터페이스에 정적 방법이 있을 수 없기 때문에 인터페이스Types의 정적 공장 방법은 Types라는 실례화 클래스에 놓여 있다.(Collection,Collect... EffectiveJava Consider Builder if parameter so much in constructor 매개변수가 많을 경우, 프로그래머들은 점층적 생성자 패턴(telescoping constructor pattern)을 즐겨 사용했다. 이 클래스의 인스턴스를 만들려면 원하는 매개변수를 모두 포함한 생성자 중 가장 짧은 것을 골라 호출하면 된다. 하지만 코드 자체만 봐도 너무 많은 코드가 작성되고 성능적으로도 call stack이 불필요하게 많이 쌓임을 느낄 수 있습니다. 이런 선택 매개변수가... JavaEffectiveJavaEffectiveJava [Java] 인스턴스화를 막으려거든 private 생성자를 사용하라 item4. 인스턴스화를 막으려거든 private 생성자를 사용하라 Effective Java 공부 인스턴스로 만들어 쓰려고 설계하지 않은 클래스들이 있다. (ex: 정적 멤버만 담은 정적 유틸리티 클래스) 이 때 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어준다. 즉 매개변수를 받지 않는 public 생성자가 만들어지면 사용자는 이것이 자동 생성된 것인지 구분할 수 없다... EffectiveJavaJavaEffectiveJava Effective 자바 - 사유 구조 기 강화 단일 속성 최 적 화 된 솔 루 션 매 거 C 코드 를 쓸 때 우 리 는 간단 한 논 리 를 매크로 에 정의 하 는 것 을 배 웠 다.이렇게 하면 컴 파일 러 가 컴 파일 할 때 이 매크로 를 사용 하 는 곳 을 매크로 코드 로 직접 교체 하 는 것 이 장점 이다.이렇게 하면 더 이상 호출 방법 과 같은 스 택 을 쌓 고 스 택 을 나 가 인삼 을 전달 할 필요 가 없다.성능 이 향상 되 었 다.내 연 함수 의 처리 방식 은 매크로 ... 디자인 모드Effective자바 독서 노트EffectiveJava독서 노트 와 지식 총화