首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Effective-Java
只因后端
创建于2023-04-25
订阅专栏
Effective-Java学习
等 4 人订阅
共89篇文章
创建于2023-04-25
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
87. 考虑使用自定义的序列化形式
87. 考虑使用自定义的序列化形式 当你在时间紧迫的情况下编写类时,通常应该将精力集中在设计最佳的 API 上。有时,这意味着发布一个「一次性」实现,你也知道在将来的版本中会替换它。通常这不是一个
33. 优先考虑类型安全的异构容器
33. 优先考虑类型安全的异构容器 泛型的常见用法包括集合,如 Set<E> 和 Map<K,V> 和单个元素容器,如 ThreadLocal<T> 和 AtomicReference<T>。 在
42. lambda表达式优于匿名类
42. lambda 表达式优于匿名类 在 Java 8 中,添加了函数式接口,lambda 表达式和方法引用,以便更容易地创建函数对象。 Stream API 随着其他语言的修改一同被添加进来,
10. 重写equals方法时遵守通用约定
10. 重写 equals 方法时遵守通用约定 虽然 Object 是一个具体的类,但它主要是为继承而设计的。它的所有非 final 方法(equals、hashCode、toString、clo
40. 始终使用Override注解
40. 始终使用 Override 注解 Java 类库包含几个注解类型。对于典型的程序员来说,最重要的是 @Override。此注解只能在方法声明上使用,它表明带此注解的方法声明重写了父类的声明
53. 明智审慎地使用可变参数
53. 明智审慎地使用可变参数 可变参数方法正式名称称为可变的参数数量方法「variable arity methods」 [JLS, 8.4.1],接受零个或多个指定类型的参数。 可变参数机制首
12. 始终重写 toString 方法
12. 始终重写 toString 方法 虽然 Object 类提供了 toString 方法的实现,但它返回的字符串通常不是你的类的用户想要看到的。 它由类名后跟一个「at」符号(@)和哈希码的
36. 使用EnumSet替代位属性
36. 使用 EnumSet 替代位属性 如果枚举类型的元素主要用于集合中,一般来说使用 int 枚举模式(详见第 34 条),下面将 2 的不同倍数赋值给每个常量: 这种表示方式允许你使用按
21. 为后代设计接口
21. 为后代设计接口 在 Java 8 之前,不可能在不破坏现有实现的情况下为接口添加方法。 如果向接口添加了一个新方法,现有的实现通常会缺少该方法,从而导致编译时错误。 在 Java 8 中,
84. 不要依赖线程调度器
84. 不要依赖线程调度器 当许多线程可以运行时,线程调度器决定哪些线程可以运行以及运行多长时间。任何合理的操作系统都会尝试公平地做出这个决定,但是策略可能会有所不同。因此,编写良好的程序不应该依
78. 同步访问共享的可变数据
78. 同步访问共享的可变数据 关键字 synchronized 可以保证在同一时刻,只有一个线程可以执行某一个方法,或者某一个代码块。许多程序员把同步的概念仅仅理解为一种互斥( mutual e
59. 了解并使用库
59. 了解并使用库 假设你想要生成 0 到某个上界之间的随机整数。面对这个常见任务,许多程序员会编写一个类似这样的小方法: 这个方法看起来不错,但它有三个缺点。首先,如果 n 是小的平方数,
09. 使用try-with-resources语句替代try-finally语句
9. 使用 try-with-resources 语句替代 try-finally 语句 Java 类库中包含许多必须通过调用 close 方法手动关闭的资源。 比如 InputStream,Ou
49. 检查参数有效性
49. 检查参数有效性 本章(第 8 章)讨论了方法设计的几个方面:如何处理参数和返回值,如何设计方法签名以及如何记载方法文档。 本章中的大部分内容适用于构造方法和其他普通方法。 与第 4 章一样
25. 将源文件限制为单个顶级类
25. 将源文件限制为单个顶级类 虽然 Java 编译器允许在单个源文件中定义多个顶级类,但这样做没有任何好处,并且存在重大风险。 风险源于在源文件中定义多个顶级类使得为类提供多个定义成为可能。
81. 并发工具优于 wait 和 notify
81. 并发工具优于 wait 和 notify 本书第 1 版中专门用了一个条目来说明如何正确地使用 wait 和 notify ( Bloch01,详见第 50 条) 。它提出的建议仍然有效,
52. 明智审慎地使用重载
52. 明智审慎地使用重载 下面的程序是一个善意的尝试,根据 Set、List 或其他类型的集合对它进行分类: 您可能希望此程序打印 Set,然后是 List 和 Unknown Collec
80. executor 、task 和 stream 优先于线程
80. executor 、task 和 stream 优先于线程 本书第 1 版中阐述了简单的工作队列(work queue)[Bloch01 ,详见第 49 条]的代码。这个类允许客户端按队列
47. 优先使用Collection而不是Stream来作为方法的返回类型
47. 优先使用 Collection 而不是 Stream 来作为方法的返回类型 许多方法返回元素序列(sequence)。在 Java 8 之前,通常方法的返回类型是 Collection,S
下一页