Effective Java
• Creating and Destroying Objects创建和销毁对象
1. Consider static factory methods instead of constructors
考虑用静态工厂方法代替构造器
2. Consider a builder when faced with many constructor parameters
遇到多个构造器参数时要考虑用构建器
3. Enforce the singleton property with a private constructor or an enum type
用私有构造器或者枚举类型强化singleton属性
4. Enforce noninstantiability with a private constructor
通过私有构造器强化不可实例化的能力
5. Avoid creating unnecessary objects
避免创建不必要的对象
6. Eliminate obsolete object references
消除过期的对象引用
7. Avoid finalizers
避免使用终结函数
• Methods Common to All Objects对于所有对象都通用的方法
8. Obey the general contract when overriding equals
改写equals时请遵守通用约定
9. Always override hashCode when you override equals
改写equals时总要改写hashCode
10. Always override toString
始终要改写tostring
11. Override clone judiciously
谨慎地改写clone
12. Consider implementing Comparable
考虑实现Comparable接口
• Classes and Interfaces类和接口
13. Minimize the accessibility of classes and members
使类和成员的可访问性最小化
14. In public classes, use accessor methods, not public fields
在公有类中使用访问方法而非公有域
15. Minimize mutability
使非可变性最小化
16. Favor composition over inheritance
复合优先于继承
17. Design and document for inheritance or else prohibit it
要么为继承而设计,并提供文档说明,要么就禁止继承
18. Prefer interfaces to abstract classes
接口优于抽象类
19. Use interfaces only to define types
接口只用于定义类型
20. Prefer class hierarchies to tagged classes
类层次优于标签类
21. Use function objects to represent strategies
用函数对象表示策略
22. Favor static member classes over nonstatic
优先考虑静态成员类
• Generics泛型
23. Don’t use raw types in new code
请不要在新代码中使用原生态类型
24. Eliminate unchecked warnings
消除非受检警告
25. Prefer lists to arrays
列表优先于数组
26. Favor generic types
优先考虑泛型
27. Favor generic methods
优先考虑泛型方法
28. Use bounded wildcards to increase API flexibility
利用有限制通配符来提升API的灵活性
29. Consider typesafe heterogeneous containers
优先考虑类型安全的异构容器
• Enums and Annotations枚举和注解
30. Use enums instead of int constants
用enum代替int常量
31. Use instance fields instead of ordinals
用实例域代替序数
32. Use EnumSet instead of bit fields
用EnumSet代替位域
33. Use EnumMap instead of ordinal indexing
用EnumMap代替序数索引
34. Emulate extensible enums with interfaces
用接口模拟可伸缩的枚举
35. Prefer annotations to naming patterns
注解优先于命名模式
36. Consistently use the Override annotation
坚持使用override注解
37. Use marker interfaces to define types
用标记接口定义类型
• Methods方法
38. Check parameters for validity
检查参数的有效性
39. Make defensive copies when needed
必要时进行保护性拷贝
40. Design method signatures carefully
谨慎设计方法签名
41. Use overloading judiciously
慎用重载
42. Use varargs judiciously
慎用可变参数(varargs)
43. Return empty arrays or collections, not nulls
返回零长度的数组或者集合,而不是null
44. Write doc comments for all exposed API elements
为所有导出的API元素编写文档注释
• General Programming通用程序设计
45. Minimize the scope of local variables
将局部变量的作用域最小化
46. Prefer for-each loops to traditional for loops
for-each循环优先于传统的for循环
47. Know and use the libraries
了解和使用类库
48. Avoid float and double if exact answers are required
如果需要精确的答案,请避免使用float和double
49. Prefer primitive types to boxed primitives
原语类型优先于装箱的原语类型
50. Avoid strings where other types are more appropriate
如果其他类型更适合,则尽量避免使用字符串
51. Beware the performance of string concatenation
了解字符串连接的性能
52. Refer to objects by their interfaces
通过接口引用对象
53. Prefer interfaces to reflection
接口优先于反射机制
54. Use native methods judiciously
谨慎地使用本地方法
55. Optimize judiciously
谨慎地进行优化
56. Adhere to generally accepted naming conventions
遵守普遍接受的命名惯例
• Exceptions异常
57. Use exceptions only for exceptional conditions
只针对异常的条件才使用异常
58. Use checked exceptions for recoverable conditions and runtime exceptions for programming errors
对可恢复的条件使用受检异常,对编程错误使用运行时异常
59. Avoid unnecessary use of checked exceptions
避免不必要地使用受检的异常
60. Favor the use of standard exceptions
尽量使用标准的异常
61. Throw exceptions appropriate to the abstraction
抛出与抽象相对应的异常
62. Document all exceptions thrown by each method
每个方法抛出的所有异常都要有文档
63. Include failure-capture information in detail messages
在细节消息中包含失败-捕获信息
64. Strive for failure atomicity
努力使失败保持原子性
65. Don’t ignore exceptions
不要忽略异常
• Concurrency并发
66. Synchronize access to shared mutable data
同步访问共享的可变数据
67. Avoid excessive synchronization
避免过多同步
68. Prefer executors and tasks to threads
executor和task优先于线程
69. Prefer concurrency utilities to wait and notify
并发工具优先于wait和notify
70. Document thread safety
线程安全性的文档化
71. Use lazy initialization judiciously
慎用延迟初始化
72. Don’t depend on the thread scheduler
不要依赖于线程调度器
73. Avoid thread groups
避免使用线程组
• Serialization序列化
74. Implement Serializable judiciously
谨慎地实现serializable
75. Consider using a custom serialized form
考虑使用自定义的序列化形式
76. Write readObject methods defensively
保护性地编写readobject方法
77. For instance control, prefer enum types to readResolve
对于实例控制,枚举类型优先于readResolve
78. Consider serialization proxies instead of serialized instances
考虑用序列化代理代替序列化实例
相关推荐
这份"JAVA技术摘要(内容荟萃的解决方案)"涵盖了Java技术的多个关键方面,为开发者提供了一站式的知识宝库。以下是根据描述和标签提炼出的一些主要知识点: 1. **Java基础**:Java是一种面向对象的编程语言,它的...
Java教程摘要文档主要聚焦于Java编程语言的学习概览,它可能是为初学者或者有经验的开发者提供的一份简明教程,旨在帮助他们理解和掌握Java的核心概念。Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems...
摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接...
Java加密算法是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java平台上,有多种内置的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),它们为开发者...
标题《编写高效优雅Java程序Java系列2021.pdf》和描述《编写高效优雅Java程序Java系列2021.pdf》共同指向了文档内容的重点,即如何编写高效和优雅的Java程序。文档从多个方面给出了编程建议和最佳实践,涵盖到了面向...
理解Servlet的工作原理对于编写高效、可维护的Web服务至关重要。 张孝祥老师的教学风格深入浅出,注重实践,他的课程不仅包含理论知识,还强调实际操作,使学习者能够亲身体验编程的乐趣。他丰富的开发和教学经验...
摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接...
摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接...
本资源摘要信息主要介绍Java技术在商业应用中的应用,涵盖了Java技术的历史、影响、组件、概念和应用领域。下面是相关知识点: 1. Java技术的历史:Java技术的发展过程、影响和应用领域的演变。 Java技术的历史...
《Java自学之道》是针对Java初学者的一本实用参考资料,由闵开慧撰写。...通过本书,读者不仅可以学习到Java的基础知识,还能掌握高效的学习方法和解决实际问题的技巧,为自己的Java开发之路打下坚实的基础。
例如,"Effective Java"是一本著名的参考书籍,其中包含了编写高效、可维护Java代码的建议。 在实际开发中,文献检索和参考文献的使用能够帮助我们解决各种编程挑战,如性能优化、错误调试和新技术的应用。通过阅读...
这样可以确保即使有多个用户同时发送消息,服务器也能高效地处理并回应。 3. **输入输出流**:JAVA的InputStream和OutputStream类用于读写网络数据。服务器接收客户端发来的消息时,会使用InputStream;而当需要向...
1. **Java基础**: Java是一种广泛使用的面向对象的编程语言,具有跨平台性、安全性、稳定性和高效性。在Java时钟程序中,我们主要会运用到类、对象、方法等核心概念。 2. **Java GUI**: 为了创建时钟的可视界面,...
总的来说,Java开源关键词提取框架为开发者提供了一种高效、灵活的方式,帮助他们从大量文本数据中抽取出最有价值的信息,对于数据挖掘、信息检索和文本分析等应用场景有着重要的实用价值。通过深入研究和实践这些...
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
以上知识点是“Java企业级开发项目实践”的核心内容,深入理解和掌握这些,将有助于开发者在实际项目中解决各种挑战,打造出高效、稳定的企业级应用。通过阅读《Java企业级开发项目实践.pdf》这份文档,你将能够获得...
Java 财务管理系统源码 ...这样,它可以帮助他们保持记录最新且更高效。 从用户的角度来看,用户只需在该系统中开设一个账户即可。作为用户,他/她可以存入他们想要存入的金额。他们还可以提取资金。
3. **Java摘要.doc**:这可能是对Java核心概念的精炼总结,用于帮助记忆和回顾关键点。它可能包括了每个主题的核心概念、重要知识点和关键代码片段,是快速复习的好工具。 4. **Java前言.doc**:这个文档可能包含了...
在本项目"基于 Java+MySQL 实现(GUI)图书管理系统【100011072】"中,我们看到一个综合应用了Java编程语言、数据库管理(MySQL)以及图形用户界面(GUI)设计的课程设计项目。这个系统旨在为图书馆提供一套完整的...