mirror of
https://github.com/sjsdfg/effective-java-3rd-chinese.git
synced 2025-03-25 16:50:49 +08:00
update
This commit is contained in:
parent
1f8b18c16d
commit
aa72c44b93
@ -18,7 +18,7 @@ String s = "bikini";
|
||||
|
||||
该版本使用单个 String 实例,而不是每次执行时创建一个新实例。此外,它可以保证对象运行在同一虚拟机上的任何其他代码重用,而这些代码恰好包含相同的字符串字面量[[JLS, 3.10.5]](https://docs.oracle.com/javase/specs/jls/se12/html/jls-3.html#jls-3.10.5)。
|
||||
|
||||
通过使用静态工厂方法(static factory methods, 条目 1),可以避免创建不需要的对象。例如,工厂方法 `Boolean.valueOf(String)` 比构造方法 `Boolean(String)` 更可取,后者在 Java 9 中被弃用。构造方法每次调用时都必须创建一个新对象,而工厂方法永远不需要这样做,在实践中也不需要。除了重用不可变对象,如果知道它们不会被修改,还可以重用可变对象。
|
||||
通过使用静态工厂方法(详见第 1 条)和构造器,可以避免创建不需要的对象。例如,工厂方法 `Boolean.valueOf(String)` 比构造方法 `Boolean(String)` 更可取,后者在 Java 9 中被弃用。构造方法每次调用时都必须创建一个新对象,而工厂方法永远不需要这样做,在实践中也不需要。除了重用不可变对象,如果知道它们不会被修改,还可以重用可变对象。
|
||||
|
||||
一些对象的创建比其他对象的创建要昂贵得多。 如果要重复使用这样一个「昂贵的对象」,建议将其缓存起来以便重复使用。 不幸的是,当创建这样一个对象时并不总是很直观明显的。 假设你想写一个方法来确定一个字符串是否是一个有效的罗马数字。 以下是使用正则表达式完成此操作时最简单方法:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user