Java Efektywne programowanie Wydanie III.pdf

(885 KB) Pobierz
Tytuł oryginału: Effective Java (3rd Edition)
Tłumaczenie: Rafał Jońca
Projekt okładki: Studio Gravite / Olsztyn; Obarek, Pokoński, Pazdrijowski, Zaprucki
ISBN: 978-83-283-4576-8
Authorized translation from the English language edition, entitled: EFFECTIVE JAVA, Third
Edition; ISBN 0134685997; by Joshua Bloch; published by Pearson Education, Inc, publishing as
Addison-Wesley Professional. Copyright © 2018 by Pearson Education, Inc.
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 retrieval system, without permission from Pearson Education, Inc.
Polish language edition published by HELION S.A. Copyright © 2018.
Portions copyright © 2001-2008 Oracle and/or its affiliates.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi
ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie,
ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz
Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody
wynikłe z wykorzystania informacji zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/javep3
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis tre ci
S owo wst pne .......................................................................... 9
Przedmowa ............................................................................. 11
Podzi kowania ........................................................................ 15
Rozdzia 1. Wprowadzenie .............................................................. 19
Rozdzia 2. Tworzenie i usuwanie obiektów ..................................... 23
Temat 1. Tworzenie statycznych metod fabrycznych
zamiast konstruktorów .....................................................
Temat 2. Zastosowanie budowniczego do obsługi
wielu parametrów konstruktora ........................................
Temat 3. Wymuszanie właściwości singleton
za pomocą prywatnego konstruktora lub typu enum .....
Temat 4. Wykorzystanie konstruktora prywatnego
w celu uniemożliwienia utworzenia obiektu ....................
Temat 5. Stosuj wstrzykiwanie zależności
zamiast odwoływania się do zasobów na sztywno ...........
Temat 6. Unikanie powielania obiektów .........................................
Temat 7. Usuwanie niepotrzebnych referencji do obiektów ..........
Temat 8. Unikanie finalizatorów i oczyszczaczy .............................
Temat 9. Preferuj konstrukcję try z zasobami
zamiast try-finally ..............................................................
23
28
36
38
39
41
45
48
54
Rozdzia 3. Metody wspólne dla wszystkich obiektów ...................... 57
Temat 10. Zachowanie założeń w trakcie
przedefiniowywania metody equals ................................. 58
Temat 11. Przedefiniowywanie metody hashCode wraz z equals .... 70
Temat 12. Przedefiniowywanie metody toString .............................. 75
Kup książkę
Poleć książkę
6
S
PIS TREŚCI
Temat 13. Rozsądne przedefiniowywanie metody clone .................. 78
Temat 14. Implementacja interfejsu Comparable ............................ 86
Rozdzia 4. Klasy i interfejsy ........................................................... 93
Temat 15. Ograniczanie dostępności klas i ich składników ............. 93
Temat 16. Stosowanie metod akcesorów zamiast pól publicznych
w klasach publicznych ....................................................... 98
Temat 17. Zapewnianie niezmienności obiektu .............................. 100
Temat 18. Zastępowanie dziedziczenia kompozycją ....................... 107
Temat 19. Projektowanie i dokumentowanie klas
przeznaczonych do dziedziczenia ................................... 113
Temat 20. Stosowanie interfejsów zamiast klas abstrakcyjnych .... 119
Temat 21. Projektowanie interfejsów na długie lata ....................... 124
Temat 22. Wykorzystanie interfejsów jedynie
do definiowania typów .................................................... 127
Temat 23. Zastępowanie oznaczania klas hierarchią ...................... 129
Temat 24. Zalety stosowania statycznych klas składowych ............ 132
Temat 25. Ograniczenie pliku źródłowego do pojedynczej klasy
głównego poziomu .......................................................... 135
Rozdzia 5. Typy ogólne ............................................................... 139
Nie korzystaj z typów surowych .....................................
Eliminowanie ostrzeżeń o braku kontroli ......................
Korzystanie z list zamiast tablic .......................................
Stosowanie typów ogólnych ............................................
Stosowanie metod ogólnych ...........................................
Zastosowanie związanych szablonów
do zwiększania elastyczności API ...................................
Temat 32. Ostrożne łączenie typów ogólnych
i parametrów varargs .......................................................
Temat 33. Wykorzystanie heterogenicznych kontenerów
bezpiecznych dla typów ...................................................
Temat 26.
Temat 27.
Temat 28.
Temat 29.
Temat 30.
Temat 31.
139
144
147
151
156
159
166
171
Rozdzia 6. Typy wyliczeniowe i adnotacje .................................... 177
Temat 34.
Temat 35.
Temat 36.
Temat 37.
Temat 38.
Użycie typów wyliczeniowych zamiast stałych int .........
Użycie pól instancyjnych zamiast kolejności .................
Użycie EnumSet zamiast pól bitowych ..........................
Użycie EnumMap zamiast indeksowania kolejnością ...
Emulowanie rozszerzalnych typów wyliczeniowych
za pomocą interfejsów .....................................................
Temat 39. Korzystanie z adnotacji zamiast wzorców nazw ............
Temat 40. Spójne użycie adnotacji Override ...................................
Temat 41. Użycie interfejsów znacznikowych
do definiowania typów ....................................................
177
188
189
191
196
200
207
210
Kup książkę
Poleć książkę
S
PIS TREŚCI
7
Rozdzia 7. Lambdy i strumienie ................................................... 213
Temat 42.
Temat 43.
Temat 44.
Temat 45.
Temat 46.
Stosuj lambdy zamiast klas anonimowych .....................
Wybieraj referencje do metod zamiast lambd ...............
Korzystaj ze standardowych interfejsów funkcyjnych ...
Rozważnie korzystaj ze strumieni ..................................
Stosuj w strumieniach funkcje
bez efektów ubocznych ....................................................
Temat 47. Zwracaj kolekcje zamiast strumieni ...............................
Temat 48. Ostrożnie korzystaj ze strumieni zrównoleglonych ......
213
217
219
223
231
236
242
Rozdzia 8. Metody ...................................................................... 247
Temat 49.
Temat 50.
Temat 51.
Temat 52.
Temat 53.
Temat 54.
Sprawdzanie poprawności parametrów .........................
Defensywne kopiowanie .................................................
Projektowanie sygnatur metod .......................................
Rozsądne korzystanie z przeciążania .............................
Rozsądne korzystanie z metod varargs ..........................
Zwracanie pustych tablic lub kolekcji
zamiast wartości null .......................................................
Temat 55. Rozsądne zwracanie obiektów opcjonalnych .................
Temat 56. Tworzenie komentarzy dokumentujących
dla udostępnianych elementów API ...............................
247
250
255
257
263
265
267
272
Rozdzia 9. Programowanie .......................................................... 281
Temat 57. Ograniczanie zasięgu zmiennych lokalnych ..................
Temat 58. Stosowanie pętli for-each
zamiast tradycyjnych pętli for ........................................
Temat 59. Poznanie i wykorzystywanie bibliotek ...........................
Temat 60. Unikanie typów float i double,
gdy potrzebne są dokładne wyniki .................................
Temat 61. Stosowanie typów prostych
zamiast opakowanych typów prostych ...........................
Temat 62. Unikanie typu String, gdy istnieją
bardziej odpowiednie typy ..............................................
Temat 63. Problemy z wydajnością
przy łączeniu ciągów znaków ..........................................
Temat 64. Odwoływanie się do obiektów poprzez interfejsy .........
Temat 65. Stosowanie interfejsów zamiast refleksyjności ..............
Temat 66. Rozważne wykorzystywanie metod natywnych .............
Temat 67. Unikanie przesadnej optymalizacji ................................
Temat 68. Wykorzystanie ogólnie
przyjętych konwencji nazewnictwa ................................
281
284
287
290
292
296
298
299
301
304
306
309
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin