《Effective Java英文版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)JOSHUABLOCH著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115211316
  • 页数:346 页
图书介绍:通过阅读本书,读者将更透彻的了解如何使用Java开发应用程序、小程序等。书中介绍了Java语言的基本知识,包括数据类型、变量、表达式、对象、数组、条件语句、循环、类、接口、包异常和线程,以及类库。另外,讲解如何避免编程中的错误也是本书的一个重点。

1 Introduction 1

2 Creating and Destroying Objects 5

Item 1:Consider static factory methods instead of constructors 5

Item 2:Consider a builder when faced with many constructor parameters 11

Item 3:Enforce the singleton property with a private constructor or an enum type 17

Item 4:Enforce noninstantiability with a private constructor 19

Item 5:Avoid creating unnecessary objects 20

Item 6:Eliminate obsolete object references 24

Item 7:Avoid finalizers 27

3 Methods Common to All Objects 33

Item 8:Obey the general contract when overriding equals 33

Item 9:Always override hashCode when you override equals 45

Item 10:Always override toString 51

Item 11:Override clone judiciously 54

Item 12:Consider implementing Comparable 62

4 Classes and Interfaces 67

Item 13:Minimize the accessibility of classes and members 67

Item 14:In public classes,use accessor methods,not public fields 71

Item 15:Minimize mutability 73

Item 16:Favor composition over inheritance 81

Item 17:Design and document for inheritance or else prohibit it 87

Item 18:Prefer interfaces to abstract classes 93

Item 19:Use interfaces only to define types 98

Item 20:Prefer class hierarchies to tagged classes 100

Item 21:Use function objects to represent strategies 103

Item 22:Favor static member classes over nonstatic 106

5 Generics 109

Item 23:Don't use raw types in new code 109

Item 24:Eliminate unchecked warnings 116

Item 25:Prefer lists to arrays 119

Item 26:Favor generic types 124

Item 27:Favor generic methods 129

Item 28:Use bounded wildcards to increase API flexibility 134

Item 29:Consider typesafe heterogeneous containers 142

6 Enums and Annotations 147

Item 30:Use enums instead of int constants 147

Item 31:Use instance fields instead of ordinals 158

Item 32:Use EnumSet instead of bit fields 159

Item 33:Use EnumMap instead of ordinal indexing 161

Item 34:Emulate extensible enums with interfaces 165

Item 35:Prefer annotations to naming patterns 169

Item 36:Consistently use the Override annotation 176

Item 37:Use marker interfaces to define types 179

7 Methods 181

Item 38:Check parameters for validity 181

Item 39:Make defensive copies when needed 184

Item 40:Design method signatures carefully 189

Item 41:Use overloading judiciously 191

Item 42:Use varargs judiciously 197

Item 43:Return empty arrays or collections,not nulls 201

Item 44:Write doc comments for all exposed API elements 203

8 General Programming 209

Item 45:Minimize the scope of local variables 209

Item 46:Prefer for-each loops to traditional for loops 212

Item 47:Know and use the libraries 215

Item 48:Avoid float and double if exact answers are required 218

Item 49:Prefer primitive types to boxed primitives 221

Item 50:Avoid strings where other types are more appropriate 224

Item 51:Beware the performance of string concatenation 227

Item 52:Refer to objects by their interfaces 228

Item 53:Prefer interfaces to reflection 230

Item 54:Use native methods judiciously 233

Item 55:Optimize judiciously 234

Item 56:Adhere to generally accepted naming conventions 237

9 Exceptions 241

Item 57:Use exceptions only for exceptional conditions 241

Item 58:Use checked exceptions for recoverable conditions and runtime exceptions for programming errors 244

Item 59:Avoid unnecessary use of checked exceptions 246

Item 60:Favor the use of standard exceptions 248

Item 61:Throw exceptions appropriate to the abstraction 250

Item 62:Document all exceptions thrown by each method 252

Item 63:Include failure-capture information in detail messages 254

Item 64:Strive for failure atomicity 256

Item 65:Don't ignore exceptions 258

10 Concurrency 259

Item 66:Synchronize access to shared mutable data 259

Item 67:Avoid excessive synchronization 265

Item 68:Prefer executors and tasks to threads 271

Item 69:Prefer concurrency utilities to wait and notify 273

Item 70:Document thread safety 278

Item 71:Use lazy initialization judiciously 282

Item 72:Don't depend on the thread scheduler 286

Item 73:Avoid thread groups 288

11 Serialization 289

Item 74:Implement Serializable judiciously 289

Item 75:Consider using a custom serialized form 295

Item 76:Write readObject methods defensively 302

Item 77:For instance control,prefer enum types to readResolve 308

Item 78:Consider serialization proxies instead of serialized instances 312

Appendix:Items Corresponding to First Edition 317

References 321

Index 327