РуЛиб - онлайн библиотека > Блох Джошуа > Java, Java Script > Java: эффективное программирование

Читаем онлайн «Java: эффективное программирование»

Java
ЭФФЕКТИВНОЕ
ПРОГРАММИРОВАНИЕ
Третье издание
Ещё больше книг по Java в нашем телеграм канале:
https://t.me/javalib
Effective Java
Third Edition
Joshua Bloch
/▼Addison-Wesley
Boston • Columbus • Indianapolis • New York • San Francisco • Amsterdam • Cape Town
Dubai • London • Madrid • Milan • Munich • Paris • Montreal • Toronto • Delhi • Mexico City
Sao Paulo • Sydney • Hong Kong • Seoul • Singapore • Taipei • Tokyo
Java
ЭФФЕКТИВНОЕ
ПРОГРАММИРОВАНИЕ
Третье издание
Джошуа Блох
Ещё больше книг по Java в нашем телеграм канале:
https://t.me/javalib
Москва • Санкт-Петербург
2019
ББК 32.973.26-018.2.75
Б70
УДК 681.3.07
ООО “Диалектика"
Зав. редакцией С.Н. Тригуб
Перевод с английского и редакция канд. техн, наук И,В. Красикова
Рецензент канд. физ.-мат. наукД.Е. Намиот
По общим вопросам обращайтесь в издательство “Диалектика" по адресу:
info@dialektika.com, http://www.dialektika.com
Блох, Джошуа
Б70
Java: эффективное программирование, 3-е изд. : Пер. с англ. — СПб. : ООО “Диалектика”,
2019. — 464 с.: ил. — Парал. тит. англ.
ISBN 978-5-6041394-4-8 (рус.)
ББК 32.973.26-018.2.75
Все названия программных продуктов являются зарегистрированными торговыми марками
соответствующих фирм.
Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой бы то
ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая
фотокопирование и запись на магнитный носитель, если на это нет письменного разрешения издатель­
ства Addison-Wesley Publishing Company, Inc.
Copyright © 2019 by Dialektika Computer Publishing Ltd.
Authorized translation from the English language edition of Effective Java, 3rd Edition (ISBN 978-0-13468599-1) published by Addison-Wesley Publishing Company, Inc., Copyright © 2018 Pearson Education Inc.
Portions copyright © 2001-2008 Oracle and/or its affiliates.
This translation is published and sold by permission of Pearson Education, Inc., which owns or controls
all rights to sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information storage or retrieval sys­
tem, without the prior written permission of the copyright owner and the Publisher.
Научно-популярное издание
Джошуа Блох
Java: эффективное программирование, 3-е издание
Подписано в печать 31.10.2018.
Формат 70x100/16. Гарнитура Times.
Усл. печ. л. 29,0. Уч.-изд. л. 23,4.
Тираж 500 экз. Заказ № 11008.
Отпечатано в АО “Первая Образцовая типография”
Филиал “Чеховский Печатный Двор”
142300, Московская область, г. Чехов, ул. Полиграфистов, д. 1
Сайт: www.chpd.ru, E-mail: sales@chpd.ru, тел. 8 (499) 270-73-59
ООО “Диалектика”, 195027, Санкт-Петербург, Магнитогорская ул., д. 30, лит. А, пом. 848
ISBN 978-5-6041394-4-8 (рус.)
ISBN 978-0-13-468599-1 (англ.)
© ООО “Диалектика”, 2019
© Pearson Education Inc., 2018
Оглавление
Вступительное слово
13
Предисловие
15
Благодарности
19
Глава 1. Введение
25
Глава 2. Создание и уничтожение объектов
29
Глава 3. Методы, общие для всех объектов
67
Глава 4. Классы и интерфейсы
109
Глава 5. Обобщенное программирование
159
Глава 6. Перечисления и аннотации
203
Глава 7. Лямбда-выражения и потоки
245
Глава 8. Методы
283
Глава 9. Общие вопросы программирования
321
Глава 10. Исключения
359
Глава 11. Параллельные вычисления
381
Глава 12. Сериализация
413
Приложение. Соответствие статей второго издания
разделам третьего издания
445
Список литературы
449
Предметный указатель
453
Содержание
Вступительное слово
13
Предисловие
Предисловие к третьему изданию
Предисловие ко второму изданию
Предисловие к первому изданию
15
15
16
17
Благодарности
Благодарности к третьему изданию
Благодарности ко второму изданию
Благодарности к первому изданию
Ждем ваших отзывов!
19
19
20
21
22
Глава 1. Введение
25
Глава 2. Создание и уничтожение объектов
2.1. Рассмотрите применение статических фабричных методов
вместо конструкторов
2.2. При большом количестве параметров конструктора подумайте
о проектном шаблоне Строитель
2.3. Получайте синглтон с помощью закрытого конструктора
или типа перечисления
2.4. Обеспечивайте неинстанцируемость с помощью закрытого
конструктора
2.5. Предпочитайте внедрение зависимостей жестко
прошитым ресурсам
2.6. Избегайте создания излишних объектов
2.7. Избегайте устаревших ссылок на объекты
2.8. Избегайте финализаторов и очистителей
2.9. Предпочитайте try-с-ресурсами использованию try-f inally
29
Глава 3. Методы, общие для всех объектов
3.1. Перекрывая equals, соблюдайте общий контракт
3.2. Всегда при перекрытии equals перекрывайте hashCode
67
67
81
29
34
43
46
47
50
53
57
63
3.3. Всегда перекрывайте toString
3.4. Перекрывайте метод clone осторожно
3.5. Подумайте о реализации Comparable
87
90
100
Глава 4. Классы и интерфейсы
4.1. Минимизируйте доступность классов и членов
4.2. Используйте в открытых классах методы доступа,
а не открытые поля
4.3. Минимизируйте изменяемость
4.4. Предпочитайте композицию наследованию
4.5. Проектируйте и документируйте наследование
либо запрещайте его
4.6. Предпочитайте интерфейсы абстрактным классам
4.7. Проектируйте интерфейсы для