썸네일 [Effective Java 3/E] ITEM 43. 람다보다는 메서드 참조를 사용하라 *알림 : * Effective Java 3판은 Java 9까지 도입된 언어적 기능을 중심으로 서술되어 있습니다. 10버젼 이후의 Java 개발을 하시는 분들은 우회적인 접근법 대신 Java 언어 내 새로 도입된 기능이 더 간결하고 좋을 수 있습니다. 해당 포스팅은 SSAFY 내 책읽기 스터디의 활동을 통해 작성된 포스팅입니다. https://github.com/kjsu0209/JavaBook https://medium.com/javabook JavaBook – Medium Documentation space of our book study. medium.com kjsu0209/JavaBook 책읽기 스터디. Contribute to kjsu0209/JavaBook development by creati..
썸네일 [Effective Java 3/E] ITEM 42. 익명 클래스보다는 람다를 사용하라 *알림 : * Effective Java 3판은 Java 9까지 도입된 언어적 기능을 중심으로 서술되어 있습니다. 10버젼 이후의 Java 개발을 하시는 분들은 우회적인 접근법 대신 Java 언어 내 새로 도입된 기능이 더 간결하고 좋을 수 있습니다. 해당 포스팅은 SSAFY 내 책읽기 스터디의 활동을 통해 작성된 포스팅입니다. https://github.com/kjsu0209/JavaBook https://medium.com/javabook JavaBook – Medium Documentation space of our book study. medium.com kjsu0209/JavaBook 책읽기 스터디. Contribute to kjsu0209/JavaBook development by creati..
썸네일 [Effective Java 3/E] ITEM 41. 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라 *알림 : * Effective Java 3판은 Java 9까지 도입된 언어적 기능을 중심으로 서술되어 있습니다. 10버젼 이후의 Java 개발을 하시는 분들은 우회적인 접근법 대신 Java 언어 내 새로 도입된 기능이 더 간결하고 좋을 수 있습니다. 해당 포스팅은 SSAFY 내 책읽기 스터디의 활동을 통해 작성된 포스팅입니다. https://github.com/kjsu0209/JavaBook https://medium.com/javabook JavaBook – Medium Documentation space of our book study. medium.com kjsu0209/JavaBook 책읽기 스터디. Contribute to kjsu0209/JavaBook development by creati..
썸네일 [Effective Java 3/E] ITEM 40. @Override Annotation을 일관적으로 사용하기 *알림 : * Effective Java 3판은 Java 9까지 도입된 언어적 기능을 중심으로 서술되어 있습니다. 10버젼 이후의 Java 개발을 하시는 분들은 우회적인 접근법 대신 Java 언어 내 새로 도입된 기능이 더 간결하고 좋을 수 있습니다. 해당 포스팅은 SSAFY 내 책읽기 스터디의 활동을 통해 작성된 포스팅입니다. https://github.com/kjsu0209/JavaBook https://medium.com/javabook JavaBook – Medium Documentation space of our book study. medium.com kjsu0209/JavaBook 책읽기 스터디. Contribute to kjsu0209/JavaBook development by creati..
썸네일 [Effective Java 3/E] ITEM 39. 명명 패턴보다 애너테이션을 사용하라 *알림 : * Effective Java 3판은 Java 9까지 도입된 언어적 기능을 중심으로 서술되어 있습니다. 10버젼 이후의 Java 개발을 하시는 분들은 우회적인 접근법 대신 Java 언어 내 새로 도입된 기능이 더 간결하고 좋을 수 있습니다. 해당 포스팅은 SSAFY 내 책읽기 스터디의 활동을 통해 작성된 포스팅입니다. https://github.com/kjsu0209/JavaBook https://medium.com/javabook JavaBook – Medium Documentation space of our book study. medium.com kjsu0209/JavaBook 책읽기 스터디. Contribute to kjsu0209/JavaBook development by creati..
썸네일 [Effective Java 3/E] ITEM 38. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라. *알림 : * Effective Java 3판은 Java 9까지 도입된 언어적 기능을 중심으로 서술되어 있습니다. 10버젼 이후의 Java 개발을 하시는 분들은 우회적인 접근법 대신 Java 언어 내 새로 도입된 기능이 더 간결하고 좋을 수 있습니다. 해당 포스팅은 SSAFY 내 책읽기 스터디의 활동을 통해 작성된 포스팅입니다. https://github.com/kjsu0209/JavaBook https://medium.com/javabook kjsu0209/JavaBook 책읽기 스터디. Contribute to kjsu0209/JavaBook development by creating an account on GitHub. github.com JavaBook – Medium Documentation ..
썸네일 [Effective Java 3/E] ITEM 37. ordinal 인덱싱 대신 EnumMap을 사용하라 배열이나 리스트에서 원소를 꺼낼 때, ordinal메서드로 인덱스를 얻는 코드가 가끔 있는데, 바람직하지 못하다. 예제 1-1 : Plant 클래스 class Plant { enum LifeCycle { ANNUAL, PERENNIAL, BIENNIAL } final String name; final LifeCycle lifeCycle; Plant(String name, LifeCycle lifeCycle) { this.name = name; this.lifeCycle = lifeCycle; } @Override public String toString() { return name; } } Plant 클래스의 inner class로 enum 타입을 선언해주었다. Enum타입은 생애주기를 나타낸다. 예제 ..
썸네일 [Effective Java 3/E] ITEM 36. 비트 필드 대신 EnumSet을 사용하라 작성자 주: 저는 C/C++ 개발을 할 때 비트 필드 구현을 많이 사용했습니다. 하나의 int/long 타입 정수에 여러 개의 flag를 넣을 수 있어 많이 사용됩니다. 보통 or 연산으로 합치고, and로 원하는 flag를 가져오는 식으로 사용합니다. 아래 예제는 리눅스 커널의 mman.h 파일에 있는 flag의 일부입니다. #ifdef __USE_MISC # define MAP_GROWSDOWN 0x00100 /* Stack-like segment. */ # define MAP_DENYWRITE 0x00800 /* ETXTBSY */ # define MAP_EXECUTABLE 0x01000 /* Mark it as an executable. */ # define MAP_LOCKED 0x02000 /*..
썸네일 [Effective Java 3/E] ITEM 35. ordinal 메서드 대신 인스턴스 필드를 사용하라 Enum 클래스는 해당 상수가 Enum 타입에서 몇 번째 상수인지 리턴하는 ordinal 메서드를 제공한다. 그러나 사용하지 않아야 한다. 예제1 : 합주단의 종류 public enum Ensemble { SOLO, DUET, TRIO, QUARTET, QUINTET, SEXTET, SEPTET, OCTET, NONET, DECTET; public int numberOfMusicians() { return ordinal() + 1; } } 쓰지 말아야 하는 이유 상수 선언 순서를 바꾸면 ordinal()은 오동작한다. 선언 순서에 기반해 동작하는 ordinal() 입장에선 당연하다. 이미 사용중인 정수와 똑같은 값을 가지는 상수는 만들 수 없다. 8중주는 8명이서 연주한다(octet). 그러나 복4중주(..
[Effective Java 3/E] ITEM 34. int 상수 대신 열거 타입을 사용하라 열거(이하 Enum) 타입이 도입되기 전에는 상수를 정의할 때에는 정수 열거 패턴(int enum pattern)을 사용했다. //DO NOT public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE_TEMPLE = 1; public static final int ORANGE_BLOOD = 2; 쓰지 말아야 할 이유 이 정수 열거 패턴은 type safe를 보장할 수 없다.(APPLE_FUJI==ORAN..
[Effective Java 3/E] 3장 모든 객체의 공통 메서드 ITEM 10. equals는 일반 규약을 지켜 재정의 하라 기본 object를 상속하고 equals를 override 하지 않은 경우에는, Object의 equals를 상속하고 객체 식별성을 기준으로 판단한다. String s1 = new String("a"); String s2 = new String("a"); s1 == s2; // false. 두 객체는 같은 "a"라는 문자열을 담고 있는 클래스지만 // 각각 다른 인스턴스다. s1.equals(s2); // true. 다른 객체지만 의미가 같으므로 논리적 동치성. 아래 규칙 중 단 하나라도 만족하면 재정의 하지 않도록 하자. 각 인스턴스가 본질적으로 고유하다. 값을 표현하는 게 아닌 동작하는 개체를 표현한다. thread는 equals가 성립할 ..
[Effective Java 3/E] 2장 객체 생성과 파괴 ITEM 1 Consider Static Factory Methods Static factory method(정적 팩터리 메서드) 생성자 없이 메서드를 통해 객체를 생성하는 것 ! : 디자인 패턴에서 일치하는 패턴은 없다. 책의 고유한 패턴. //example : valueOf in Boolean box class public static Boolean valueOf(boolean b){ return b ? Boolea.TRUE : Boolean.FALSE; } Advantages 생성자와 다르게 이름을 가질 수 있다. 생성자의 파라미터로는 반환될 객체의 특성을 코드 작성자가 알기 힘들다. 그러나 정적 팩터리 메서드는 이름을 잘 지어놓으면 코드를 읽는 사람이 반환될 객체의 특성을 쉽게 이해할 수 있다. ..