Advanced java
e
,Advancedejava ii
Contents
1 Howetoecreateeandedestroyeobjects 1
1.1 1
Introductione .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .
e.
1.2 1
InstanceeConstructione .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .
e .
1.2.1 Implicite(Generated)eConstructore .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 1
1.2.2 ConstructorsewithouteArgumentse .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 1
1.2.3 ConstructorsewitheArgumentse e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 2
1.2.4 InitializationeBlockse e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 2
1.2.5 Constructioneguaranteee .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 3
1.2.6 Visibilitye e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 4
1.2.7 Garbageecollectione .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 4
1.2.8 Finalizerse .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 5
1.3 5
Staticeinitializatione e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .
e.
1.4 5
ConstructionePatternse .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .
e .
1.4.1 Singletone .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 6
1.4.2 Utility/HelpereClasse e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 7
1.4.3 Factorye .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 7
1.4.4 DependencyeInjectione e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e . 8
1.5 9
DownloadetheeSourceeCodee .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .
e.
1.6 9
What’senexte .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .e .
e .
2 Usingemethodsecommonetoealleobjects 10
2.1 Introduction ................................................................................................................................................................. 10
2.2 Methodse equalse ande hashCode ....................................................................................................................................... 11
, Advancedejava iii
2.3 MethodetoString ........................................................................................................................................................... 13
2.4 Methodeclone ................................................................................................................................................................ 14
2.5 Methodeequalseande==eoperator ................................................................................................................................... 15
2.6 Usefulehelpereclasses .................................................................................................................................................... 15
2.7 DownloadetheeSourceeCode ........................................................................................................................................... 16
2.8 What’senext ................................................................................................................................................................... 16
3 HowetoedesigneClasseseandeInterfaces 17
3.1 Introduction ................................................................................................................................................................. 17
3.2 Interfaces ..................................................................................................................................................................... 17
3.3 MarkereInterfaces ......................................................................................................................................................... 18
3.4 Functionale interfaces,e defaulte ande statice methods .......................................................................................................... 19
3.5 Abstracteclasses ............................................................................................................................................................ 20
3.6 Immutablee classes ........................................................................................................................................................ 20
3.7 Anonymouseclasses ...................................................................................................................................................... 21
3.8 Visibility ....................................................................................................................................................................... 22
3.9 Inheritance ................................................................................................................................................................... 22
3.10 Multipleeinheritance .................................................................................................................................................... 24
3.11 Inheritanceeandecomposition .......................................................................................................................................... 25
3.12 Encapsulation .............................................................................................................................................................. 26
3.13 Finaleclasseseandemethods ............................................................................................................................................ 27
3.14 DownloadetheeSourceeCode ........................................................................................................................................... 27
3.15 What’senext ................................................................................................................................................................... 27
4 HoweandewhenetoeuseeGenerics 28
4.1 Introduction ................................................................................................................................................................. 28
4.2 Genericseandeinterfaces ................................................................................................................................................. 28
4.3 Genericseandeclasses ..................................................................................................................................................... 29
4.4 Genericseandemethods .................................................................................................................................................. 29
4.5 Limitationeofegenerics .................................................................................................................................................. 30
4.6 Generics,e wildcardse ande boundede types ........................................................................................................................ 31
4.7 Genericseandetypeeinference.......................................................................................................................................... 32
4.8 Genericseandeannotations ............................................................................................................................................. 33
4.9 Accessingegenericetypeeparameters .............................................................................................................................. 33
4.10 Whenetoeuseegenerics .................................................................................................................................................... 34
4.11 DownloadetheeSourceeCode ........................................................................................................................................... 35
4.12 What’senext ................................................................................................................................................................... 35
5 HoweandewhenetoeuseeEnumseandeAnnotations 36
5.1 Introduction ................................................................................................................................................................. 36