『Effective Java 第3版』正誤表
2024年5月11日更新
はじめに
『Effective Java 第3版』は、何度も校正を重ねましたが、誤りを見逃していたりするかもしれません。誤りに気づかれた方は、連絡をお願いいたします。
第1刷 (2018年10月30日発行)
- xv頁: 「第3版へのまえがき」の1行目の「Jamese Gosling」を「James Gosling」に修正(2018.11.1)
- 2頁: 下から2段落目の2行目「Azule」を「Azul」に修正(2019.2.17)
- 3頁: 第2段落の1行目の「この本ではほんとどの部分で」を「この本ではほとんどの部分で」に修正(2019.4.29)
- 3頁: 下から2行目の「そのパッケージ内のすべてのpublicクラスあるいはpublicインタフェース内の、publicのメンバーとprotectedのメンバーとコンストラクタから構成されます」を「そのパッケージ内の、すべてのpublicクラスのpublicとprotectedのメンバーとコンストラクタおよびpublicインタフェースから構成されます」に修正(2019.5.1)
- 8頁: 下から第2段落目の最後の行の「不可欠だらかです」を「不可欠だからです」に修正(2018.11.5)
- 16頁: 下から第2段落目の1行目の「ビルダ」を「ビルダー」に修正(2019.2.17)
- 20頁: 下から4行目の「直観的に反します」を「直観に反します」に修正(2019.4.29)
- 20頁: 下から2行目の「呼び出さなければなず、」を「呼び出さなければならず、」に修正(2018.11.8)
- 24頁: 下から3段落目の1行目の「
isRomanNumeral
メソッドを含だクラス」を「isRomanNumeral
メソッドを含んだクラス」に修正(2018.11.12)
- 24頁: 最後の行の「見えかも」を「見えるかも」に修正(2018.11.30)
- 27頁: 最後の行の「抱えいます」を「抱えています」に修正(2018.11.12)
- 34頁: 上から5行目の「登録してとき」を「登録したとき」に修正(2019.2.17)
- 38頁: 上から4行目の「アクセスもできます」を「アクセスもできます。」に修正(2019.4.29)
- 41頁: 脚注の最後の行の「数学での」を「訳注:数学での」に修正(2020.10.31)
- 48頁: 最初のコード例の後の段落の4行目の「
instanceof
演算による」を「instanceof
演算子による」に修正(2020.10.31)
- 49頁: 上から4行目の「staticメソッドの
Float.equals
とDouble.equals
」を「インスタンスメソッドのFloat.equals
とDouble.equals
」に修正(2020.7.11)
- 51頁: 下から2段落目の3行目の「
hasCode
」を「hashCode
」に修正(2020.8.16)
- 53頁: レシピの「2.」の行の「フィールド
f
対して」を「フィールドf
に対して」に修正(2018.11.12)
- 56頁: 最初の段落の最後の行の「動作することにます」を「動作することになります」に修正(2019.2.17)
- 85頁: 第3段落の2行目の「内部的では」を「内部的には」に修正(2019.4.27)
- 120頁: 頁の先頭のコード例のコメントの「今日では原型の」を「原型の」に修正(2019.2.17)
- 120頁: 頁の最後のコンパイルエラーの例のキャレット(
^
)の位置が、正しくはCoin
のC
の真下に修正(2019.2.17)
- 130頁: 頁の中程のコードのコメント「
Choose
をジェネリック化」を「Chooser
をジェネリック化」に修正(2019.2.17)
- 138頁: 最後の段落のすべての「
UnaryFunction
」を「UnaryOperator
」に修正(2020.1.10)
- 139頁: 第2段落のすべての「
UnaryFunction
」を「UnaryOperator
」に修正(2020.1.10)
- 144頁: 下から2段落目の3行目の「Java 8で目的型が導入され」を「Java 8で目的型付け(target typing)が導入され」に修正(2019.2.17)
- 145頁: 下から3段落目の6行目の「ワイルドカードを必要とするは」を「ワイルドカードを必要とするのは」に修正(2018.11.12)
- 150頁: 脚注の文章の先頭に「訳注:」を挿入(2020.12.20)
- 176頁: 下から2行目の「転移もと」を「転移元」に修正(2019.10.25)
- 177頁: コード例の「
IONIZE(GAS, PLASMA), DEIONIZE(PLASMA, GAS)
」を「IONIZE(GAS, PLASMA), DEIONIZE(PLASMA, GAS)
」(ボールド)に修正(2020.12.13)
- 180頁: 下から5行目の「指定された操作」を「組み合わされた操作」に修正(2019.10.25)
- 188頁: コード例の「
public static void doublyBad() ...
」を「public static void doublyBad() { ... }
」に修正(2019.4.22)
- 188頁: 最後の段落の下から5行目の「型の反復アノテーションが付けられて」を「型の反復されたアノテーションが付けられて」に修正(2019.10.25)
- 188頁: 最後の段落の下から5行目の「要素にその反復アノテーション型のアノテーション」を「要素にその型のアノテーション」に修正(2019.4.27)
- 188頁: 最後の段落の下から3行目の「プログラムは反復アノテーションを黙って」を「プログラムは反復されたアノテーションを黙って」に修正(2019.10.25)
- 189頁: 上から3行目の「次のページに示しています。」を「次に示しています。」に修正(2019.4.27)
- 193頁: 第3段落の6行目の「
ObjectOutputStream.write
API」を「ObjectOuputStream.writeObject
API」に修正(2021.2.7)
- 193頁: 4段落目の1行目の「マーカーアノテーションに優るマーカーインタフェースのもう一つの長所は、マーカーインタフェースは正確に対象を特定できることです。」の部分をボールド(2019.4.22)
- 196頁: 最初の段落の最後から2行目の「戻り値すなわちラムダ式全体」を「戻り値あるいはラムダ式全体」に修正(2020.12.13)
- 199頁: 2段落目の3行目の「与えらた値」を「与えられた値」に修正(2018.11.12)
- 202頁: 上から5行目の「まとめるための」を「組み合わせるための」に修正(2019.10.25)
- 202頁: 2段落目の1行目の「
java.util.Function
」を「java.util.function
」に修正(2023.1.20)
- 202頁: 下から3行目の「ソースが基本データで結果がオブジェクト参照であれば、
Function
の前にSrcToObj
を付けます。たとえば、DoubleToObjFunction
です(3個の変形があります)。」を「ソースがオブジェクト参照で結果が基本データであれば、Function
の前にTo
Resultを付けます。たとえば、ToDoubleFunction
です(3個の変形があります)。」に修正(2023.1.20)
- 204頁: 最後の段落の下から3行目の「
java.util.function.Function
」を「java.util.function
」に修正(2019.4.27)
- 204頁: 脚注の文章の先頭に「訳注:」を挿入(2020.12.20)
- 213頁: 下から2行目の「
Scanner
のstream
メソッド」を「Scanner
のtokens
メソッド」に修正(原著の誤り)(2018.11.12)
- 214頁: 上から3行目の「36個メソッド」を「36個のメソッド」に修正(2019.4.22)
- 220頁: 3段落目の3行目の「そのコレクションを保持には」を「そのコレクションの保持には」に修正(2018.11.12)
- 228頁: 下から5行目の「それが行いことであれば」を「それが行いたいことであれば」に修正(2019.4.22)
- 245頁: 下から6行目の「不格好こと」を「不格好なこと」に修正(2019.4.22)
- 249頁: 上から3行目の「(項目64)」を「(項目69)」に修正(2023.2.26)
- 254頁: 第2段落の3行目の[Javadocguide]を[Javadoc-guide]に修正(2019.4.22)
- 256頁: 真ん中のコードの「
* This implementation returns @code this.size() == 0.
」を「* This implementation returns {@code this.size() == 0}.
」に修正(2019.4.22)
- 271頁: 5行目の「Puzzle 2」を「パズル2」に修正(2018.11.1)
- 298頁: コード例の「
} catch(TheCheckedException e) {
」を「} catch (TheCheckedException e) {
」に修正(2箇所)(2021.2.12)
- 302頁: 第3段落目の2行目の「AbstractSequential List」を「AbstractSequentialList」に修正(2018.11.25)
- 322頁: 中程のコード例「executor.shutdown();」を「exec.shutdown();」に修正(2019.1.19)
- 325頁: 2段落目の3行目の「キーの先頭要素」を「キューの先頭要素」に修正(2021.2.12)
- 325頁: 下から第3段落の1行目の「互い待つ」を「互いに待つ」に修正(2019.10.25)
- 338頁: 6行目の「広く使われていいます。」を「広く使われています。」に修正(2018.11.25)
- 339頁: 下から2段落目の1行目の「クロスプラットフォームの構造化データ表現」を「クロスプラットフォーム構造化データ表現」に修正(2021.2.12)
- 340頁: 最後の段落の2行目の「クロスプラットフォームの構造化データ表現」を「クロスプラットフォーム構造化データ表現」に修正(2021.2.12)
- 344頁: 3段落の5行目の「理想な」を「理想的な」に修正(2021.8.14)
- 367頁: 第2版の項目19に対して「21、将来のためにインタフェースを使う」を「22、型を定義するためだけにインタフェースを使う」に修正(2018.11.1)
- 369頁: 第2版の項目66に対する行が抜けているので、「78、共有された可変データへのアクセスを同期する」を追加(2018.11.1))
- 373頁: [Shipilëv]を[Shipilëv16]に修正(2019.4.22)
第2刷 (2020年9月10日発行)
- 41頁: 脚注の最後の行の「数学での」を「訳注:数学での」に修正(2020.10.31)
- 48頁: 最初のコード例の後の段落の4行目の「
instanceof
演算による」を「instanceof
演算子による」に修正(2020.10.31)
- 51頁: 下から2段落目の3行目の「
hasCode
」を「hashCode
」に修正(2020.8.16)
- 150頁: 脚注の文章の先頭に「訳注:」を挿入(2020.12.20)
- 177頁: コード例の「
IONIZE(GAS, PLASMA), DEIONIZE(PLASMA, GAS)
」を「IONIZE(GAS, PLASMA), DEIONIZE(PLASMA, GAS)
」(ボールド)に修正(2020.12.13)
- 193頁: 第3段落の6行目の「
ObjectOutputStream.write
API」を「ObjectOuputStream.writeObject
API」に修正(2021.2.7)
- 196頁: 最初の段落の最後から2行目の「戻り値すなわちラムダ式全体」を「戻り値あるいはラムダ式全体」に修正(2020.12.13)
- 202頁: 2段落目の1行目の「
java.util.Function
」を「java.util.function
」に修正(2023.1.20)
- 202頁: 下から2行目の「
Function
の前にTo
Srcを付けます。」を「Function
の前にTo
Resultを付けます。」に修正(2023.1.20)
- 204頁: 脚注の文章の先頭に「訳注:」を挿入(2020.12.20)
- 249頁: 上から3行目の「(項目64)」を「(項目69)」に修正(2023.2.26)
- 298頁: コード例の「
} catch(TheCheckedException e) {
」を「} catch (TheCheckedException e) {
」に修正(2箇所)(2021.2.12)
- 325頁: 2段落目の3行目の「キーの先頭要素」を「キューの先頭要素」に修正(2021.2.12)
- 339頁: 下から2段落目の1行目の「クロスプラットフォームの構造化データ表現」を「クロスプラットフォーム構造化データ表現」に修正(2021.2.12)
- 340頁: 最後の段落の2行目の「クロスプラットフォームの構造化データ表現」を「クロスプラットフォーム構造化データ表現」に修正(2021.2.12)
- 344頁: 3段落の5行目の「理想な」を「理想的な」に修正(2021.8.14)
第3刷 (2022年9月20日発行)
- 202頁: 2段落目の1行目の「
java.util.Function
」を「java.util.function
」に修正(2023.1.20)
- 202頁: 下から2行目の「
Function
の前にTo
Srcを付けます。」を「Function
の前にTo
Resultを付けます。」に修正(2023.1.20)
- 249頁: 上から3行目の「(項目64)」を「(項目69)」に修正(2023.2.26)
第4刷 (2023年12月20日発行)
用語補足
用語「不変式」(invariant)は、「常に真である条件、あるいは関係」を意味します。
謝辞
誤りの指摘を頂きました次の方々に感謝いたします。
@hfh3oa9、宿久 真吾、山下 健司、木村 洋太、染谷 研次、加藤 裕、Java読書会BOF、橋本 岳央、山田 祥允、鈴木 大作、與那城 有