Effective Java 3rdの内容をまとめていく。
2章 オブジェクトの生成と消滅
Item 1~9
3章 全てのオブジェクトに共通のメソッド
Item 10~14
4章 クラスとインターフェース
Item 15~22
Item 23: Prefer class hierarchies to tagged classes
Item 24: Favor static member classes over nonstatic
Item 25:Limit source files to a single top-level class
5章 ジェネリクス
Item 26: Don't use raw types
Item 27: Eliminate unchecked warnings
Item 28: Prefer lists to arrays
Item 29: Favor generic types
Item 30: Favar generic methods
Item 31: Use bounded wildcards to increase API flexibility
Item 32: Combine generics and varargs judiciously
##Item 33: Consider typesafe heterogeneous containers
6章 enumとアノテーション
Item 34~35
Item 36: Use EnumSet instead of bit fields
Item 37: Use EnumMap instead of ordinal indexing
Item 38: Emulate extensible enums with interfaces
Item 39: Prefer annotations to naming patterns
Item 40: Consistently use the Override annotation
Item 41: Use marker interfaces to define types
7章 ラムダ式とストリーム
Item 42: Prefer lambdas to anonymous classes
Item 43: Prefer method references to lambdas
Item 44: Favor the use of standard functional interfaces
Item 45: Use streams judiciously
Item 46: Prefer side-effect-free functions in streams
Item 47: Prefer Collection to Stream as a return type
Item 48: Use caution when making streams parallel
8章 メソッド
Item 49: Check parameters for validity
Item 50: Make defensive copies when needed
Item 51: Design method signatures carefully
Item 52: Use overloading judiciously
Item 53: Use varargs judiciously
Item 54: Return empty collections or arrays, not nulls
Item 55: Return optionals judiciously
Item 56: Write doc comments for all exposed API elements
9章 プログラミング一般
Item 57: Minimize the scope of local variables
Item 58: Prefer for-each loops to traditional for loops
Item 59: Know and use the libraries
Item 60: Avoid float and double if exact answers are required
Item 61: Prefer primitive types to boxed primitives
Item 62: Avoid strings where other types are more appropriate
Item 63: Beware the performance of string concatenation
Item 64: Refer to objects by their interfaces
Item 65: Prefer interfaces to reflection
Item 66: Use native methods judiciously
Item 67: Optimize judiciously
Item 68: Adhere to generally accepted naming conventions
10章 例外
Item 69: Use exceptions only for exceptional conditions
Item 70: Use checked exceptions for recoverable conditions and runtime exceptions for programming errors
Item 71: Avoid unnecessary use of checked exceptions
Item 72: Favor the use of standard exceptions
Item 73: Throw exceptions appropriate to the abstraction
Item 74: Document all exceptions thrown by each method
Item 75: Include failure-capture information in detail messages
Item 76: Strive for failure atomicity
Item 77: Don’t ignore exceptions
11章 並行性
Item 78: Synchronize access to shared mutable data
Item 79: Avoid excessive synchronization
Item 80: Prefer executors, tasks, and streams to threads
Item 81: Prefer concurrency utilities to wait and notify
Item 82: Document thread safety
Item 83: Use lazy initialization judiciously
Item 84: Don’t depend on the thread scheduler
12章 シリアライズ
Item 85: Prefer alternatives to Java serialization
Item 86: Implement Serializable with great caution
Item 87: Consider using a custom serialized form
Item 88: Write readObject methods defensively
Item 89: For instance control, prefer enum types to readResolve
Item 90: Consider serialization proxies instead of serialized instances
所感
ところどころ手抜きはあるものの、120時間くらいかかってItem1~90をまとめることができた。
次は何をしようかな。。