From 1f1080e32f4ce5124a3c8d1c6d49f952b037f37c Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Wed, 19 Dec 2018 00:15:26 +0300 Subject: [PATCH 01/16] Initial commit --- pom.xml | 52 +++++++++++++++++++ .../item74/IndexOutOfBoundsException.java | 0 .../item78/brokenstopthread/StopThread.java | 0 .../item78/fixedstopthread1/StopThread.java | 0 .../item78/fixedstopthread2/StopThread.java | 0 .../chapter11/item79/ForwardingSet.java | 0 .../chapter11/item79/ObservableSet.java | 0 .../chapter11/item79/SetObserver.java | 0 .../effectivejava/chapter11/item79/Test1.java | 0 .../effectivejava/chapter11/item79/Test2.java | 0 .../effectivejava/chapter11/item79/Test3.java | 0 .../chapter11/item81/ConcurrentTimer.java | 0 .../chapter11/item81/Intern.java | 0 .../chapter11/item83/FieldType.java | 0 .../chapter11/item83/Initialization.java | 0 .../chapter11/item84/SlowCountDownLatch.java | 0 .../java}/effectivejava/chapter12/Util.java | 0 .../chapter12/item85/DeserializationBomb.java | 0 .../chapter12/item87/StringList.java | 0 .../chapter12/item89/enumsingleton/Elvis.java | 0 .../chapter12/item90/Period.java | 0 .../item2/builder/NutritionFacts.java | 0 .../item2/hierarchicalbuilder/Calzone.java | 0 .../item2/hierarchicalbuilder/NyPizza.java | 0 .../item2/hierarchicalbuilder/Pizza.java | 0 .../item2/hierarchicalbuilder/PizzaTest.java | 0 .../item2/javabeans/NutritionFacts.java | 0 .../NutritionFacts.java | 0 .../chapter2/item3/enumtype/Elvis.java | 0 .../chapter2/item3/field/Elvis.java | 0 .../chapter2/item3/staticfactory/Elvis.java | 0 .../chapter2/item4/UtilityClass.java | 0 .../chapter2/item6/RomanNumerals.java | 0 .../effectivejava/chapter2/item6/Sum.java | 0 .../chapter2/item7/EmptyStackException.java | 0 .../effectivejava/chapter2/item7/Stack.java | 0 .../effectivejava/chapter2/item8/Adult.java | 0 .../effectivejava/chapter2/item8/Room.java | 0 .../chapter2/item8/Teenager.java | 0 .../chapter2/item9/tryfinally/Copy.java | 0 .../chapter2/item9/tryfinally/TopLine.java | 0 .../chapter2/item9/trywithresources/Copy.java | 0 .../item9/trywithresources/TopLine.java | 0 .../trywithresources/TopLineWithDefault.java | 0 .../item10/CaseInsensitiveString.java | 0 .../effectivejava/chapter3/item10/Color.java | 0 .../chapter3/item10/PhoneNumber.java | 0 .../effectivejava/chapter3/item10/Point.java | 0 .../item10/composition/ColorPoint.java | 0 .../item10/inheritance/ColorPoint.java | 0 .../item10/inheritance/CounterPoint.java | 0 .../item10/inheritance/CounterPointTest.java | 0 .../chapter3/item11/PhoneNumber.java | 0 .../chapter3/item12/PhoneNumber.java | 0 .../chapter3/item13/EmptyStackException.java | 0 .../chapter3/item13/PhoneNumber.java | 0 .../effectivejava/chapter3/item13/Stack.java | 0 .../item14/CaseInsensitiveString.java | 0 .../chapter3/item14/PhoneNumber.java | 0 .../chapter3/item14/WordList.java | 0 .../effectivejava/chapter4/item16/Point.java | 0 .../effectivejava/chapter4/item16/Time.java | 0 .../chapter4/item17/Complex.java | 0 .../chapter4/item18/ForwardingSet.java | 0 .../chapter4/item18/InstrumentedHashSet.java | 0 .../chapter4/item18/InstrumentedSet.java | 0 .../effectivejava/chapter4/item19/Sub.java | 0 .../effectivejava/chapter4/item19/Super.java | 0 .../chapter4/item20/AbstractMapEntry.java | 0 .../chapter4/item20/IntArrays.java | 0 .../constantinterface/PhysicalConstants.java | 0 .../PhysicalConstants.java | 0 .../chapter4/item23/hierarchy/Circle.java | 0 .../chapter4/item23/hierarchy/Figure.java | 0 .../chapter4/item23/hierarchy/Rectangle.java | 0 .../chapter4/item23/hierarchy/Square.java | 0 .../chapter4/item23/taggedclass/Figure.java | 0 .../chapter4/item25/Dessert.java | 0 .../effectivejava/chapter4/item25/Main.java | 0 .../effectivejava/chapter4/item25/Test.java | 0 .../chapter4/item25/Utensil.java | 0 .../effectivejava/chapter5/item26/Raw.java | 0 .../chapter5/item28/Chooser.java | 0 .../chapter5/item29/EmptyStackException.java | 0 .../chapter5/item29/technqiue1/Stack.java | 0 .../chapter5/item29/technqiue2/Stack.java | 0 .../item30/GenericSingletonFactory.java | 0 .../chapter5/item30/RecursiveTypeBound.java | 0 .../effectivejava/chapter5/item30/Union.java | 0 .../chapter5/item31/Chooser.java | 0 .../chapter5/item31/EmptyStackException.java | 0 .../chapter5/item31/RecursiveTypeBound.java | 0 .../effectivejava/chapter5/item31/Stack.java | 0 .../effectivejava/chapter5/item31/Swap.java | 0 .../effectivejava/chapter5/item31/Union.java | 0 .../chapter5/item32/Dangerous.java | 0 .../chapter5/item32/FlattenWithList.java | 0 .../chapter5/item32/FlattenWithVarargs.java | 0 .../chapter5/item32/PickTwo.java | 0 .../chapter5/item32/SafePickTwo.java | 0 .../chapter5/item33/Favorites.java | 0 .../chapter5/item33/PrintAnnotation.java | 0 .../chapter6/item34/Inverse.java | 0 .../chapter6/item34/Operation.java | 0 .../chapter6/item34/PayrollDay.java | 0 .../effectivejava/chapter6/item34/Planet.java | 0 .../chapter6/item34/WeightTable.java | 0 .../chapter6/item35/Ensemble.java | 0 .../effectivejava/chapter6/item36/Text.java | 0 .../effectivejava/chapter6/item37/Phase.java | 0 .../effectivejava/chapter6/item37/Plant.java | 0 .../chapter6/item38/BasicOperation.java | 0 .../chapter6/item38/ExtendedOperation.java | 0 .../chapter6/item38/Operation.java | 0 .../ExceptionTest.java | 0 .../RunTests.java | 0 .../annotationwitharrayparameter/Sample3.java | 0 .../ExceptionTest.java | 0 .../annotationwithparameter/RunTests.java | 0 .../annotationwithparameter/Sample2.java | 0 .../item39/markerannotation/RunTests.java | 0 .../item39/markerannotation/Sample.java | 0 .../item39/markerannotation/Test.java | 0 .../repeatableannotation/ExceptionTest.java | 0 .../ExceptionTestContainer.java | 0 .../item39/repeatableannotation/RunTests.java | 0 .../item39/repeatableannotation/Sample4.java | 0 .../effectivejava/chapter6/item40/Bigram.java | 0 .../chapter6/item40/Bigram2.java | 0 .../chapter7/item42/Operation.java | 0 .../chapter7/item42/SortFourWays.java | 0 .../effectivejava/chapter7/item43/Freq.java | 0 .../effectivejava/chapter7/item45/Card.java | 0 .../chapter7/item45/CharStream.java | 0 .../chapter7/item45/MersennePrimes.java | 0 .../item45/anagrams/HybridAnagrams.java | 0 .../item45/anagrams/IterativeAnagrams.java | 0 .../item45/anagrams/StreamAnagrams.java | 0 .../effectivejava/chapter7/item46/Freq.java | 0 .../chapter7/item47/Adapters.java | 0 .../chapter7/item47/PowerSet.java | 0 .../chapter7/item47/SubLists.java | 0 .../item48/ParallelMersennePrimes.java | 0 .../item48/ParallelPrimeCounting.java | 0 .../chapter8/item50/Attacks.java | 0 .../effectivejava/chapter8/item50/Period.java | 0 .../chapter8/item52/Champagne.java | 0 .../chapter8/item52/CollectionClassifier.java | 0 .../item52/FixedCollectionClassifier.java | 0 .../chapter8/item52/Overriding.java | 0 .../chapter8/item52/SetList.java | 0 .../chapter8/item52/SparklingWine.java | 0 .../effectivejava/chapter8/item52/Wine.java | 0 .../chapter8/item53/Varargs.java | 0 .../effectivejava/chapter8/item55/Max.java | 0 .../chapter8/item55/ParentPid.java | 0 .../chapter8/item56/DocExamples.java | 0 .../effectivejava/chapter9/item58/Card.java | 0 .../chapter9/item58/DiceRolls.java | 0 .../effectivejava/chapter9/item59/Curl.java | 0 .../chapter9/item59/RandomBug.java | 0 .../chapter9/item60/BigDecimalChange.java | 0 .../effectivejava/chapter9/item60/Change.java | 0 .../chapter9/item60/IntChange.java | 0 .../chapter9/item61/BrokenComparator.java | 0 .../chapter9/item61/Unbelievable.java | 0 .../item65/ReflectiveInstantiation.java | 0 167 files changed, 52 insertions(+) create mode 100644 pom.xml rename src/{ => main/java}/effectivejava/chapter10/item74/IndexOutOfBoundsException.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item78/brokenstopthread/StopThread.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item78/fixedstopthread1/StopThread.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item78/fixedstopthread2/StopThread.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item79/ForwardingSet.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item79/ObservableSet.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item79/SetObserver.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item79/Test1.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item79/Test2.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item79/Test3.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item81/ConcurrentTimer.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item81/Intern.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item83/FieldType.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item83/Initialization.java (100%) rename src/{ => main/java}/effectivejava/chapter11/item84/SlowCountDownLatch.java (100%) rename src/{ => main/java}/effectivejava/chapter12/Util.java (100%) rename src/{ => main/java}/effectivejava/chapter12/item85/DeserializationBomb.java (100%) rename src/{ => main/java}/effectivejava/chapter12/item87/StringList.java (100%) rename src/{ => main/java}/effectivejava/chapter12/item89/enumsingleton/Elvis.java (100%) rename src/{ => main/java}/effectivejava/chapter12/item90/Period.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item2/builder/NutritionFacts.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item2/hierarchicalbuilder/Calzone.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item2/hierarchicalbuilder/NyPizza.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item2/hierarchicalbuilder/Pizza.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item2/hierarchicalbuilder/PizzaTest.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item2/javabeans/NutritionFacts.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item2/telescopingconstructor/NutritionFacts.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item3/enumtype/Elvis.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item3/field/Elvis.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item3/staticfactory/Elvis.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item4/UtilityClass.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item6/RomanNumerals.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item6/Sum.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item7/EmptyStackException.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item7/Stack.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item8/Adult.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item8/Room.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item8/Teenager.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item9/tryfinally/Copy.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item9/tryfinally/TopLine.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item9/trywithresources/Copy.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item9/trywithresources/TopLine.java (100%) rename src/{ => main/java}/effectivejava/chapter2/item9/trywithresources/TopLineWithDefault.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item10/CaseInsensitiveString.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item10/Color.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item10/PhoneNumber.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item10/Point.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item10/composition/ColorPoint.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item10/inheritance/ColorPoint.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item10/inheritance/CounterPoint.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item10/inheritance/CounterPointTest.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item11/PhoneNumber.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item12/PhoneNumber.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item13/EmptyStackException.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item13/PhoneNumber.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item13/Stack.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item14/CaseInsensitiveString.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item14/PhoneNumber.java (100%) rename src/{ => main/java}/effectivejava/chapter3/item14/WordList.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item16/Point.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item16/Time.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item17/Complex.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item18/ForwardingSet.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item18/InstrumentedHashSet.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item18/InstrumentedSet.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item19/Sub.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item19/Super.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item20/AbstractMapEntry.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item20/IntArrays.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item22/constantinterface/PhysicalConstants.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item22/constantutilityclass/PhysicalConstants.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item23/hierarchy/Circle.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item23/hierarchy/Figure.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item23/hierarchy/Rectangle.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item23/hierarchy/Square.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item23/taggedclass/Figure.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item25/Dessert.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item25/Main.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item25/Test.java (100%) rename src/{ => main/java}/effectivejava/chapter4/item25/Utensil.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item26/Raw.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item28/Chooser.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item29/EmptyStackException.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item29/technqiue1/Stack.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item29/technqiue2/Stack.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item30/GenericSingletonFactory.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item30/RecursiveTypeBound.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item30/Union.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item31/Chooser.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item31/EmptyStackException.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item31/RecursiveTypeBound.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item31/Stack.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item31/Swap.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item31/Union.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item32/Dangerous.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item32/FlattenWithList.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item32/FlattenWithVarargs.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item32/PickTwo.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item32/SafePickTwo.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item33/Favorites.java (100%) rename src/{ => main/java}/effectivejava/chapter5/item33/PrintAnnotation.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item34/Inverse.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item34/Operation.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item34/PayrollDay.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item34/Planet.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item34/WeightTable.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item35/Ensemble.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item36/Text.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item37/Phase.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item37/Plant.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item38/BasicOperation.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item38/ExtendedOperation.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item38/Operation.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/annotationwitharrayparameter/ExceptionTest.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/annotationwitharrayparameter/RunTests.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/annotationwitharrayparameter/Sample3.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/annotationwithparameter/ExceptionTest.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/annotationwithparameter/RunTests.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/annotationwithparameter/Sample2.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/markerannotation/RunTests.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/markerannotation/Sample.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/markerannotation/Test.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/repeatableannotation/ExceptionTest.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/repeatableannotation/ExceptionTestContainer.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/repeatableannotation/RunTests.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item39/repeatableannotation/Sample4.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item40/Bigram.java (100%) rename src/{ => main/java}/effectivejava/chapter6/item40/Bigram2.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item42/Operation.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item42/SortFourWays.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item43/Freq.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item45/Card.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item45/CharStream.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item45/MersennePrimes.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item45/anagrams/HybridAnagrams.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item45/anagrams/IterativeAnagrams.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item45/anagrams/StreamAnagrams.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item46/Freq.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item47/Adapters.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item47/PowerSet.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item47/SubLists.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item48/ParallelMersennePrimes.java (100%) rename src/{ => main/java}/effectivejava/chapter7/item48/ParallelPrimeCounting.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item50/Attacks.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item50/Period.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item52/Champagne.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item52/CollectionClassifier.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item52/FixedCollectionClassifier.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item52/Overriding.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item52/SetList.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item52/SparklingWine.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item52/Wine.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item53/Varargs.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item55/Max.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item55/ParentPid.java (100%) rename src/{ => main/java}/effectivejava/chapter8/item56/DocExamples.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item58/Card.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item58/DiceRolls.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item59/Curl.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item59/RandomBug.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item60/BigDecimalChange.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item60/Change.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item60/IntChange.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item61/BrokenComparator.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item61/Unbelievable.java (100%) rename src/{ => main/java}/effectivejava/chapter9/item65/ReflectiveInstantiation.java (100%) diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..900a474e --- /dev/null +++ b/pom.xml @@ -0,0 +1,52 @@ + + 4.0.0 + effective-java-examples + effective-java-examples + 1.0 + effective-java-examples + Source code to the book "Effective Java Third Edition" created by Joshua Bloch + http://java.sun.com/docs/books/effective/index.html + + Joshua Bloch + http://java.sun.com/docs/books/effective/index.html + + + + junit + junit + 4.12 + test + + + + org.slf4j + slf4j-api + 1.7.21 + + + + ch.qos.logback + logback-classic + 1.1.7 + + + com.google.guava + guava + 24.1-jre + + + + + + + + maven-compiler-plugin + + 1.9 + 1.9 + + + + + \ No newline at end of file diff --git a/src/effectivejava/chapter10/item74/IndexOutOfBoundsException.java b/src/main/java/effectivejava/chapter10/item74/IndexOutOfBoundsException.java similarity index 100% rename from src/effectivejava/chapter10/item74/IndexOutOfBoundsException.java rename to src/main/java/effectivejava/chapter10/item74/IndexOutOfBoundsException.java diff --git a/src/effectivejava/chapter11/item78/brokenstopthread/StopThread.java b/src/main/java/effectivejava/chapter11/item78/brokenstopthread/StopThread.java similarity index 100% rename from src/effectivejava/chapter11/item78/brokenstopthread/StopThread.java rename to src/main/java/effectivejava/chapter11/item78/brokenstopthread/StopThread.java diff --git a/src/effectivejava/chapter11/item78/fixedstopthread1/StopThread.java b/src/main/java/effectivejava/chapter11/item78/fixedstopthread1/StopThread.java similarity index 100% rename from src/effectivejava/chapter11/item78/fixedstopthread1/StopThread.java rename to src/main/java/effectivejava/chapter11/item78/fixedstopthread1/StopThread.java diff --git a/src/effectivejava/chapter11/item78/fixedstopthread2/StopThread.java b/src/main/java/effectivejava/chapter11/item78/fixedstopthread2/StopThread.java similarity index 100% rename from src/effectivejava/chapter11/item78/fixedstopthread2/StopThread.java rename to src/main/java/effectivejava/chapter11/item78/fixedstopthread2/StopThread.java diff --git a/src/effectivejava/chapter11/item79/ForwardingSet.java b/src/main/java/effectivejava/chapter11/item79/ForwardingSet.java similarity index 100% rename from src/effectivejava/chapter11/item79/ForwardingSet.java rename to src/main/java/effectivejava/chapter11/item79/ForwardingSet.java diff --git a/src/effectivejava/chapter11/item79/ObservableSet.java b/src/main/java/effectivejava/chapter11/item79/ObservableSet.java similarity index 100% rename from src/effectivejava/chapter11/item79/ObservableSet.java rename to src/main/java/effectivejava/chapter11/item79/ObservableSet.java diff --git a/src/effectivejava/chapter11/item79/SetObserver.java b/src/main/java/effectivejava/chapter11/item79/SetObserver.java similarity index 100% rename from src/effectivejava/chapter11/item79/SetObserver.java rename to src/main/java/effectivejava/chapter11/item79/SetObserver.java diff --git a/src/effectivejava/chapter11/item79/Test1.java b/src/main/java/effectivejava/chapter11/item79/Test1.java similarity index 100% rename from src/effectivejava/chapter11/item79/Test1.java rename to src/main/java/effectivejava/chapter11/item79/Test1.java diff --git a/src/effectivejava/chapter11/item79/Test2.java b/src/main/java/effectivejava/chapter11/item79/Test2.java similarity index 100% rename from src/effectivejava/chapter11/item79/Test2.java rename to src/main/java/effectivejava/chapter11/item79/Test2.java diff --git a/src/effectivejava/chapter11/item79/Test3.java b/src/main/java/effectivejava/chapter11/item79/Test3.java similarity index 100% rename from src/effectivejava/chapter11/item79/Test3.java rename to src/main/java/effectivejava/chapter11/item79/Test3.java diff --git a/src/effectivejava/chapter11/item81/ConcurrentTimer.java b/src/main/java/effectivejava/chapter11/item81/ConcurrentTimer.java similarity index 100% rename from src/effectivejava/chapter11/item81/ConcurrentTimer.java rename to src/main/java/effectivejava/chapter11/item81/ConcurrentTimer.java diff --git a/src/effectivejava/chapter11/item81/Intern.java b/src/main/java/effectivejava/chapter11/item81/Intern.java similarity index 100% rename from src/effectivejava/chapter11/item81/Intern.java rename to src/main/java/effectivejava/chapter11/item81/Intern.java diff --git a/src/effectivejava/chapter11/item83/FieldType.java b/src/main/java/effectivejava/chapter11/item83/FieldType.java similarity index 100% rename from src/effectivejava/chapter11/item83/FieldType.java rename to src/main/java/effectivejava/chapter11/item83/FieldType.java diff --git a/src/effectivejava/chapter11/item83/Initialization.java b/src/main/java/effectivejava/chapter11/item83/Initialization.java similarity index 100% rename from src/effectivejava/chapter11/item83/Initialization.java rename to src/main/java/effectivejava/chapter11/item83/Initialization.java diff --git a/src/effectivejava/chapter11/item84/SlowCountDownLatch.java b/src/main/java/effectivejava/chapter11/item84/SlowCountDownLatch.java similarity index 100% rename from src/effectivejava/chapter11/item84/SlowCountDownLatch.java rename to src/main/java/effectivejava/chapter11/item84/SlowCountDownLatch.java diff --git a/src/effectivejava/chapter12/Util.java b/src/main/java/effectivejava/chapter12/Util.java similarity index 100% rename from src/effectivejava/chapter12/Util.java rename to src/main/java/effectivejava/chapter12/Util.java diff --git a/src/effectivejava/chapter12/item85/DeserializationBomb.java b/src/main/java/effectivejava/chapter12/item85/DeserializationBomb.java similarity index 100% rename from src/effectivejava/chapter12/item85/DeserializationBomb.java rename to src/main/java/effectivejava/chapter12/item85/DeserializationBomb.java diff --git a/src/effectivejava/chapter12/item87/StringList.java b/src/main/java/effectivejava/chapter12/item87/StringList.java similarity index 100% rename from src/effectivejava/chapter12/item87/StringList.java rename to src/main/java/effectivejava/chapter12/item87/StringList.java diff --git a/src/effectivejava/chapter12/item89/enumsingleton/Elvis.java b/src/main/java/effectivejava/chapter12/item89/enumsingleton/Elvis.java similarity index 100% rename from src/effectivejava/chapter12/item89/enumsingleton/Elvis.java rename to src/main/java/effectivejava/chapter12/item89/enumsingleton/Elvis.java diff --git a/src/effectivejava/chapter12/item90/Period.java b/src/main/java/effectivejava/chapter12/item90/Period.java similarity index 100% rename from src/effectivejava/chapter12/item90/Period.java rename to src/main/java/effectivejava/chapter12/item90/Period.java diff --git a/src/effectivejava/chapter2/item2/builder/NutritionFacts.java b/src/main/java/effectivejava/chapter2/item2/builder/NutritionFacts.java similarity index 100% rename from src/effectivejava/chapter2/item2/builder/NutritionFacts.java rename to src/main/java/effectivejava/chapter2/item2/builder/NutritionFacts.java diff --git a/src/effectivejava/chapter2/item2/hierarchicalbuilder/Calzone.java b/src/main/java/effectivejava/chapter2/item2/hierarchicalbuilder/Calzone.java similarity index 100% rename from src/effectivejava/chapter2/item2/hierarchicalbuilder/Calzone.java rename to src/main/java/effectivejava/chapter2/item2/hierarchicalbuilder/Calzone.java diff --git a/src/effectivejava/chapter2/item2/hierarchicalbuilder/NyPizza.java b/src/main/java/effectivejava/chapter2/item2/hierarchicalbuilder/NyPizza.java similarity index 100% rename from src/effectivejava/chapter2/item2/hierarchicalbuilder/NyPizza.java rename to src/main/java/effectivejava/chapter2/item2/hierarchicalbuilder/NyPizza.java diff --git a/src/effectivejava/chapter2/item2/hierarchicalbuilder/Pizza.java b/src/main/java/effectivejava/chapter2/item2/hierarchicalbuilder/Pizza.java similarity index 100% rename from src/effectivejava/chapter2/item2/hierarchicalbuilder/Pizza.java rename to src/main/java/effectivejava/chapter2/item2/hierarchicalbuilder/Pizza.java diff --git a/src/effectivejava/chapter2/item2/hierarchicalbuilder/PizzaTest.java b/src/main/java/effectivejava/chapter2/item2/hierarchicalbuilder/PizzaTest.java similarity index 100% rename from src/effectivejava/chapter2/item2/hierarchicalbuilder/PizzaTest.java rename to src/main/java/effectivejava/chapter2/item2/hierarchicalbuilder/PizzaTest.java diff --git a/src/effectivejava/chapter2/item2/javabeans/NutritionFacts.java b/src/main/java/effectivejava/chapter2/item2/javabeans/NutritionFacts.java similarity index 100% rename from src/effectivejava/chapter2/item2/javabeans/NutritionFacts.java rename to src/main/java/effectivejava/chapter2/item2/javabeans/NutritionFacts.java diff --git a/src/effectivejava/chapter2/item2/telescopingconstructor/NutritionFacts.java b/src/main/java/effectivejava/chapter2/item2/telescopingconstructor/NutritionFacts.java similarity index 100% rename from src/effectivejava/chapter2/item2/telescopingconstructor/NutritionFacts.java rename to src/main/java/effectivejava/chapter2/item2/telescopingconstructor/NutritionFacts.java diff --git a/src/effectivejava/chapter2/item3/enumtype/Elvis.java b/src/main/java/effectivejava/chapter2/item3/enumtype/Elvis.java similarity index 100% rename from src/effectivejava/chapter2/item3/enumtype/Elvis.java rename to src/main/java/effectivejava/chapter2/item3/enumtype/Elvis.java diff --git a/src/effectivejava/chapter2/item3/field/Elvis.java b/src/main/java/effectivejava/chapter2/item3/field/Elvis.java similarity index 100% rename from src/effectivejava/chapter2/item3/field/Elvis.java rename to src/main/java/effectivejava/chapter2/item3/field/Elvis.java diff --git a/src/effectivejava/chapter2/item3/staticfactory/Elvis.java b/src/main/java/effectivejava/chapter2/item3/staticfactory/Elvis.java similarity index 100% rename from src/effectivejava/chapter2/item3/staticfactory/Elvis.java rename to src/main/java/effectivejava/chapter2/item3/staticfactory/Elvis.java diff --git a/src/effectivejava/chapter2/item4/UtilityClass.java b/src/main/java/effectivejava/chapter2/item4/UtilityClass.java similarity index 100% rename from src/effectivejava/chapter2/item4/UtilityClass.java rename to src/main/java/effectivejava/chapter2/item4/UtilityClass.java diff --git a/src/effectivejava/chapter2/item6/RomanNumerals.java b/src/main/java/effectivejava/chapter2/item6/RomanNumerals.java similarity index 100% rename from src/effectivejava/chapter2/item6/RomanNumerals.java rename to src/main/java/effectivejava/chapter2/item6/RomanNumerals.java diff --git a/src/effectivejava/chapter2/item6/Sum.java b/src/main/java/effectivejava/chapter2/item6/Sum.java similarity index 100% rename from src/effectivejava/chapter2/item6/Sum.java rename to src/main/java/effectivejava/chapter2/item6/Sum.java diff --git a/src/effectivejava/chapter2/item7/EmptyStackException.java b/src/main/java/effectivejava/chapter2/item7/EmptyStackException.java similarity index 100% rename from src/effectivejava/chapter2/item7/EmptyStackException.java rename to src/main/java/effectivejava/chapter2/item7/EmptyStackException.java diff --git a/src/effectivejava/chapter2/item7/Stack.java b/src/main/java/effectivejava/chapter2/item7/Stack.java similarity index 100% rename from src/effectivejava/chapter2/item7/Stack.java rename to src/main/java/effectivejava/chapter2/item7/Stack.java diff --git a/src/effectivejava/chapter2/item8/Adult.java b/src/main/java/effectivejava/chapter2/item8/Adult.java similarity index 100% rename from src/effectivejava/chapter2/item8/Adult.java rename to src/main/java/effectivejava/chapter2/item8/Adult.java diff --git a/src/effectivejava/chapter2/item8/Room.java b/src/main/java/effectivejava/chapter2/item8/Room.java similarity index 100% rename from src/effectivejava/chapter2/item8/Room.java rename to src/main/java/effectivejava/chapter2/item8/Room.java diff --git a/src/effectivejava/chapter2/item8/Teenager.java b/src/main/java/effectivejava/chapter2/item8/Teenager.java similarity index 100% rename from src/effectivejava/chapter2/item8/Teenager.java rename to src/main/java/effectivejava/chapter2/item8/Teenager.java diff --git a/src/effectivejava/chapter2/item9/tryfinally/Copy.java b/src/main/java/effectivejava/chapter2/item9/tryfinally/Copy.java similarity index 100% rename from src/effectivejava/chapter2/item9/tryfinally/Copy.java rename to src/main/java/effectivejava/chapter2/item9/tryfinally/Copy.java diff --git a/src/effectivejava/chapter2/item9/tryfinally/TopLine.java b/src/main/java/effectivejava/chapter2/item9/tryfinally/TopLine.java similarity index 100% rename from src/effectivejava/chapter2/item9/tryfinally/TopLine.java rename to src/main/java/effectivejava/chapter2/item9/tryfinally/TopLine.java diff --git a/src/effectivejava/chapter2/item9/trywithresources/Copy.java b/src/main/java/effectivejava/chapter2/item9/trywithresources/Copy.java similarity index 100% rename from src/effectivejava/chapter2/item9/trywithresources/Copy.java rename to src/main/java/effectivejava/chapter2/item9/trywithresources/Copy.java diff --git a/src/effectivejava/chapter2/item9/trywithresources/TopLine.java b/src/main/java/effectivejava/chapter2/item9/trywithresources/TopLine.java similarity index 100% rename from src/effectivejava/chapter2/item9/trywithresources/TopLine.java rename to src/main/java/effectivejava/chapter2/item9/trywithresources/TopLine.java diff --git a/src/effectivejava/chapter2/item9/trywithresources/TopLineWithDefault.java b/src/main/java/effectivejava/chapter2/item9/trywithresources/TopLineWithDefault.java similarity index 100% rename from src/effectivejava/chapter2/item9/trywithresources/TopLineWithDefault.java rename to src/main/java/effectivejava/chapter2/item9/trywithresources/TopLineWithDefault.java diff --git a/src/effectivejava/chapter3/item10/CaseInsensitiveString.java b/src/main/java/effectivejava/chapter3/item10/CaseInsensitiveString.java similarity index 100% rename from src/effectivejava/chapter3/item10/CaseInsensitiveString.java rename to src/main/java/effectivejava/chapter3/item10/CaseInsensitiveString.java diff --git a/src/effectivejava/chapter3/item10/Color.java b/src/main/java/effectivejava/chapter3/item10/Color.java similarity index 100% rename from src/effectivejava/chapter3/item10/Color.java rename to src/main/java/effectivejava/chapter3/item10/Color.java diff --git a/src/effectivejava/chapter3/item10/PhoneNumber.java b/src/main/java/effectivejava/chapter3/item10/PhoneNumber.java similarity index 100% rename from src/effectivejava/chapter3/item10/PhoneNumber.java rename to src/main/java/effectivejava/chapter3/item10/PhoneNumber.java diff --git a/src/effectivejava/chapter3/item10/Point.java b/src/main/java/effectivejava/chapter3/item10/Point.java similarity index 100% rename from src/effectivejava/chapter3/item10/Point.java rename to src/main/java/effectivejava/chapter3/item10/Point.java diff --git a/src/effectivejava/chapter3/item10/composition/ColorPoint.java b/src/main/java/effectivejava/chapter3/item10/composition/ColorPoint.java similarity index 100% rename from src/effectivejava/chapter3/item10/composition/ColorPoint.java rename to src/main/java/effectivejava/chapter3/item10/composition/ColorPoint.java diff --git a/src/effectivejava/chapter3/item10/inheritance/ColorPoint.java b/src/main/java/effectivejava/chapter3/item10/inheritance/ColorPoint.java similarity index 100% rename from src/effectivejava/chapter3/item10/inheritance/ColorPoint.java rename to src/main/java/effectivejava/chapter3/item10/inheritance/ColorPoint.java diff --git a/src/effectivejava/chapter3/item10/inheritance/CounterPoint.java b/src/main/java/effectivejava/chapter3/item10/inheritance/CounterPoint.java similarity index 100% rename from src/effectivejava/chapter3/item10/inheritance/CounterPoint.java rename to src/main/java/effectivejava/chapter3/item10/inheritance/CounterPoint.java diff --git a/src/effectivejava/chapter3/item10/inheritance/CounterPointTest.java b/src/main/java/effectivejava/chapter3/item10/inheritance/CounterPointTest.java similarity index 100% rename from src/effectivejava/chapter3/item10/inheritance/CounterPointTest.java rename to src/main/java/effectivejava/chapter3/item10/inheritance/CounterPointTest.java diff --git a/src/effectivejava/chapter3/item11/PhoneNumber.java b/src/main/java/effectivejava/chapter3/item11/PhoneNumber.java similarity index 100% rename from src/effectivejava/chapter3/item11/PhoneNumber.java rename to src/main/java/effectivejava/chapter3/item11/PhoneNumber.java diff --git a/src/effectivejava/chapter3/item12/PhoneNumber.java b/src/main/java/effectivejava/chapter3/item12/PhoneNumber.java similarity index 100% rename from src/effectivejava/chapter3/item12/PhoneNumber.java rename to src/main/java/effectivejava/chapter3/item12/PhoneNumber.java diff --git a/src/effectivejava/chapter3/item13/EmptyStackException.java b/src/main/java/effectivejava/chapter3/item13/EmptyStackException.java similarity index 100% rename from src/effectivejava/chapter3/item13/EmptyStackException.java rename to src/main/java/effectivejava/chapter3/item13/EmptyStackException.java diff --git a/src/effectivejava/chapter3/item13/PhoneNumber.java b/src/main/java/effectivejava/chapter3/item13/PhoneNumber.java similarity index 100% rename from src/effectivejava/chapter3/item13/PhoneNumber.java rename to src/main/java/effectivejava/chapter3/item13/PhoneNumber.java diff --git a/src/effectivejava/chapter3/item13/Stack.java b/src/main/java/effectivejava/chapter3/item13/Stack.java similarity index 100% rename from src/effectivejava/chapter3/item13/Stack.java rename to src/main/java/effectivejava/chapter3/item13/Stack.java diff --git a/src/effectivejava/chapter3/item14/CaseInsensitiveString.java b/src/main/java/effectivejava/chapter3/item14/CaseInsensitiveString.java similarity index 100% rename from src/effectivejava/chapter3/item14/CaseInsensitiveString.java rename to src/main/java/effectivejava/chapter3/item14/CaseInsensitiveString.java diff --git a/src/effectivejava/chapter3/item14/PhoneNumber.java b/src/main/java/effectivejava/chapter3/item14/PhoneNumber.java similarity index 100% rename from src/effectivejava/chapter3/item14/PhoneNumber.java rename to src/main/java/effectivejava/chapter3/item14/PhoneNumber.java diff --git a/src/effectivejava/chapter3/item14/WordList.java b/src/main/java/effectivejava/chapter3/item14/WordList.java similarity index 100% rename from src/effectivejava/chapter3/item14/WordList.java rename to src/main/java/effectivejava/chapter3/item14/WordList.java diff --git a/src/effectivejava/chapter4/item16/Point.java b/src/main/java/effectivejava/chapter4/item16/Point.java similarity index 100% rename from src/effectivejava/chapter4/item16/Point.java rename to src/main/java/effectivejava/chapter4/item16/Point.java diff --git a/src/effectivejava/chapter4/item16/Time.java b/src/main/java/effectivejava/chapter4/item16/Time.java similarity index 100% rename from src/effectivejava/chapter4/item16/Time.java rename to src/main/java/effectivejava/chapter4/item16/Time.java diff --git a/src/effectivejava/chapter4/item17/Complex.java b/src/main/java/effectivejava/chapter4/item17/Complex.java similarity index 100% rename from src/effectivejava/chapter4/item17/Complex.java rename to src/main/java/effectivejava/chapter4/item17/Complex.java diff --git a/src/effectivejava/chapter4/item18/ForwardingSet.java b/src/main/java/effectivejava/chapter4/item18/ForwardingSet.java similarity index 100% rename from src/effectivejava/chapter4/item18/ForwardingSet.java rename to src/main/java/effectivejava/chapter4/item18/ForwardingSet.java diff --git a/src/effectivejava/chapter4/item18/InstrumentedHashSet.java b/src/main/java/effectivejava/chapter4/item18/InstrumentedHashSet.java similarity index 100% rename from src/effectivejava/chapter4/item18/InstrumentedHashSet.java rename to src/main/java/effectivejava/chapter4/item18/InstrumentedHashSet.java diff --git a/src/effectivejava/chapter4/item18/InstrumentedSet.java b/src/main/java/effectivejava/chapter4/item18/InstrumentedSet.java similarity index 100% rename from src/effectivejava/chapter4/item18/InstrumentedSet.java rename to src/main/java/effectivejava/chapter4/item18/InstrumentedSet.java diff --git a/src/effectivejava/chapter4/item19/Sub.java b/src/main/java/effectivejava/chapter4/item19/Sub.java similarity index 100% rename from src/effectivejava/chapter4/item19/Sub.java rename to src/main/java/effectivejava/chapter4/item19/Sub.java diff --git a/src/effectivejava/chapter4/item19/Super.java b/src/main/java/effectivejava/chapter4/item19/Super.java similarity index 100% rename from src/effectivejava/chapter4/item19/Super.java rename to src/main/java/effectivejava/chapter4/item19/Super.java diff --git a/src/effectivejava/chapter4/item20/AbstractMapEntry.java b/src/main/java/effectivejava/chapter4/item20/AbstractMapEntry.java similarity index 100% rename from src/effectivejava/chapter4/item20/AbstractMapEntry.java rename to src/main/java/effectivejava/chapter4/item20/AbstractMapEntry.java diff --git a/src/effectivejava/chapter4/item20/IntArrays.java b/src/main/java/effectivejava/chapter4/item20/IntArrays.java similarity index 100% rename from src/effectivejava/chapter4/item20/IntArrays.java rename to src/main/java/effectivejava/chapter4/item20/IntArrays.java diff --git a/src/effectivejava/chapter4/item22/constantinterface/PhysicalConstants.java b/src/main/java/effectivejava/chapter4/item22/constantinterface/PhysicalConstants.java similarity index 100% rename from src/effectivejava/chapter4/item22/constantinterface/PhysicalConstants.java rename to src/main/java/effectivejava/chapter4/item22/constantinterface/PhysicalConstants.java diff --git a/src/effectivejava/chapter4/item22/constantutilityclass/PhysicalConstants.java b/src/main/java/effectivejava/chapter4/item22/constantutilityclass/PhysicalConstants.java similarity index 100% rename from src/effectivejava/chapter4/item22/constantutilityclass/PhysicalConstants.java rename to src/main/java/effectivejava/chapter4/item22/constantutilityclass/PhysicalConstants.java diff --git a/src/effectivejava/chapter4/item23/hierarchy/Circle.java b/src/main/java/effectivejava/chapter4/item23/hierarchy/Circle.java similarity index 100% rename from src/effectivejava/chapter4/item23/hierarchy/Circle.java rename to src/main/java/effectivejava/chapter4/item23/hierarchy/Circle.java diff --git a/src/effectivejava/chapter4/item23/hierarchy/Figure.java b/src/main/java/effectivejava/chapter4/item23/hierarchy/Figure.java similarity index 100% rename from src/effectivejava/chapter4/item23/hierarchy/Figure.java rename to src/main/java/effectivejava/chapter4/item23/hierarchy/Figure.java diff --git a/src/effectivejava/chapter4/item23/hierarchy/Rectangle.java b/src/main/java/effectivejava/chapter4/item23/hierarchy/Rectangle.java similarity index 100% rename from src/effectivejava/chapter4/item23/hierarchy/Rectangle.java rename to src/main/java/effectivejava/chapter4/item23/hierarchy/Rectangle.java diff --git a/src/effectivejava/chapter4/item23/hierarchy/Square.java b/src/main/java/effectivejava/chapter4/item23/hierarchy/Square.java similarity index 100% rename from src/effectivejava/chapter4/item23/hierarchy/Square.java rename to src/main/java/effectivejava/chapter4/item23/hierarchy/Square.java diff --git a/src/effectivejava/chapter4/item23/taggedclass/Figure.java b/src/main/java/effectivejava/chapter4/item23/taggedclass/Figure.java similarity index 100% rename from src/effectivejava/chapter4/item23/taggedclass/Figure.java rename to src/main/java/effectivejava/chapter4/item23/taggedclass/Figure.java diff --git a/src/effectivejava/chapter4/item25/Dessert.java b/src/main/java/effectivejava/chapter4/item25/Dessert.java similarity index 100% rename from src/effectivejava/chapter4/item25/Dessert.java rename to src/main/java/effectivejava/chapter4/item25/Dessert.java diff --git a/src/effectivejava/chapter4/item25/Main.java b/src/main/java/effectivejava/chapter4/item25/Main.java similarity index 100% rename from src/effectivejava/chapter4/item25/Main.java rename to src/main/java/effectivejava/chapter4/item25/Main.java diff --git a/src/effectivejava/chapter4/item25/Test.java b/src/main/java/effectivejava/chapter4/item25/Test.java similarity index 100% rename from src/effectivejava/chapter4/item25/Test.java rename to src/main/java/effectivejava/chapter4/item25/Test.java diff --git a/src/effectivejava/chapter4/item25/Utensil.java b/src/main/java/effectivejava/chapter4/item25/Utensil.java similarity index 100% rename from src/effectivejava/chapter4/item25/Utensil.java rename to src/main/java/effectivejava/chapter4/item25/Utensil.java diff --git a/src/effectivejava/chapter5/item26/Raw.java b/src/main/java/effectivejava/chapter5/item26/Raw.java similarity index 100% rename from src/effectivejava/chapter5/item26/Raw.java rename to src/main/java/effectivejava/chapter5/item26/Raw.java diff --git a/src/effectivejava/chapter5/item28/Chooser.java b/src/main/java/effectivejava/chapter5/item28/Chooser.java similarity index 100% rename from src/effectivejava/chapter5/item28/Chooser.java rename to src/main/java/effectivejava/chapter5/item28/Chooser.java diff --git a/src/effectivejava/chapter5/item29/EmptyStackException.java b/src/main/java/effectivejava/chapter5/item29/EmptyStackException.java similarity index 100% rename from src/effectivejava/chapter5/item29/EmptyStackException.java rename to src/main/java/effectivejava/chapter5/item29/EmptyStackException.java diff --git a/src/effectivejava/chapter5/item29/technqiue1/Stack.java b/src/main/java/effectivejava/chapter5/item29/technqiue1/Stack.java similarity index 100% rename from src/effectivejava/chapter5/item29/technqiue1/Stack.java rename to src/main/java/effectivejava/chapter5/item29/technqiue1/Stack.java diff --git a/src/effectivejava/chapter5/item29/technqiue2/Stack.java b/src/main/java/effectivejava/chapter5/item29/technqiue2/Stack.java similarity index 100% rename from src/effectivejava/chapter5/item29/technqiue2/Stack.java rename to src/main/java/effectivejava/chapter5/item29/technqiue2/Stack.java diff --git a/src/effectivejava/chapter5/item30/GenericSingletonFactory.java b/src/main/java/effectivejava/chapter5/item30/GenericSingletonFactory.java similarity index 100% rename from src/effectivejava/chapter5/item30/GenericSingletonFactory.java rename to src/main/java/effectivejava/chapter5/item30/GenericSingletonFactory.java diff --git a/src/effectivejava/chapter5/item30/RecursiveTypeBound.java b/src/main/java/effectivejava/chapter5/item30/RecursiveTypeBound.java similarity index 100% rename from src/effectivejava/chapter5/item30/RecursiveTypeBound.java rename to src/main/java/effectivejava/chapter5/item30/RecursiveTypeBound.java diff --git a/src/effectivejava/chapter5/item30/Union.java b/src/main/java/effectivejava/chapter5/item30/Union.java similarity index 100% rename from src/effectivejava/chapter5/item30/Union.java rename to src/main/java/effectivejava/chapter5/item30/Union.java diff --git a/src/effectivejava/chapter5/item31/Chooser.java b/src/main/java/effectivejava/chapter5/item31/Chooser.java similarity index 100% rename from src/effectivejava/chapter5/item31/Chooser.java rename to src/main/java/effectivejava/chapter5/item31/Chooser.java diff --git a/src/effectivejava/chapter5/item31/EmptyStackException.java b/src/main/java/effectivejava/chapter5/item31/EmptyStackException.java similarity index 100% rename from src/effectivejava/chapter5/item31/EmptyStackException.java rename to src/main/java/effectivejava/chapter5/item31/EmptyStackException.java diff --git a/src/effectivejava/chapter5/item31/RecursiveTypeBound.java b/src/main/java/effectivejava/chapter5/item31/RecursiveTypeBound.java similarity index 100% rename from src/effectivejava/chapter5/item31/RecursiveTypeBound.java rename to src/main/java/effectivejava/chapter5/item31/RecursiveTypeBound.java diff --git a/src/effectivejava/chapter5/item31/Stack.java b/src/main/java/effectivejava/chapter5/item31/Stack.java similarity index 100% rename from src/effectivejava/chapter5/item31/Stack.java rename to src/main/java/effectivejava/chapter5/item31/Stack.java diff --git a/src/effectivejava/chapter5/item31/Swap.java b/src/main/java/effectivejava/chapter5/item31/Swap.java similarity index 100% rename from src/effectivejava/chapter5/item31/Swap.java rename to src/main/java/effectivejava/chapter5/item31/Swap.java diff --git a/src/effectivejava/chapter5/item31/Union.java b/src/main/java/effectivejava/chapter5/item31/Union.java similarity index 100% rename from src/effectivejava/chapter5/item31/Union.java rename to src/main/java/effectivejava/chapter5/item31/Union.java diff --git a/src/effectivejava/chapter5/item32/Dangerous.java b/src/main/java/effectivejava/chapter5/item32/Dangerous.java similarity index 100% rename from src/effectivejava/chapter5/item32/Dangerous.java rename to src/main/java/effectivejava/chapter5/item32/Dangerous.java diff --git a/src/effectivejava/chapter5/item32/FlattenWithList.java b/src/main/java/effectivejava/chapter5/item32/FlattenWithList.java similarity index 100% rename from src/effectivejava/chapter5/item32/FlattenWithList.java rename to src/main/java/effectivejava/chapter5/item32/FlattenWithList.java diff --git a/src/effectivejava/chapter5/item32/FlattenWithVarargs.java b/src/main/java/effectivejava/chapter5/item32/FlattenWithVarargs.java similarity index 100% rename from src/effectivejava/chapter5/item32/FlattenWithVarargs.java rename to src/main/java/effectivejava/chapter5/item32/FlattenWithVarargs.java diff --git a/src/effectivejava/chapter5/item32/PickTwo.java b/src/main/java/effectivejava/chapter5/item32/PickTwo.java similarity index 100% rename from src/effectivejava/chapter5/item32/PickTwo.java rename to src/main/java/effectivejava/chapter5/item32/PickTwo.java diff --git a/src/effectivejava/chapter5/item32/SafePickTwo.java b/src/main/java/effectivejava/chapter5/item32/SafePickTwo.java similarity index 100% rename from src/effectivejava/chapter5/item32/SafePickTwo.java rename to src/main/java/effectivejava/chapter5/item32/SafePickTwo.java diff --git a/src/effectivejava/chapter5/item33/Favorites.java b/src/main/java/effectivejava/chapter5/item33/Favorites.java similarity index 100% rename from src/effectivejava/chapter5/item33/Favorites.java rename to src/main/java/effectivejava/chapter5/item33/Favorites.java diff --git a/src/effectivejava/chapter5/item33/PrintAnnotation.java b/src/main/java/effectivejava/chapter5/item33/PrintAnnotation.java similarity index 100% rename from src/effectivejava/chapter5/item33/PrintAnnotation.java rename to src/main/java/effectivejava/chapter5/item33/PrintAnnotation.java diff --git a/src/effectivejava/chapter6/item34/Inverse.java b/src/main/java/effectivejava/chapter6/item34/Inverse.java similarity index 100% rename from src/effectivejava/chapter6/item34/Inverse.java rename to src/main/java/effectivejava/chapter6/item34/Inverse.java diff --git a/src/effectivejava/chapter6/item34/Operation.java b/src/main/java/effectivejava/chapter6/item34/Operation.java similarity index 100% rename from src/effectivejava/chapter6/item34/Operation.java rename to src/main/java/effectivejava/chapter6/item34/Operation.java diff --git a/src/effectivejava/chapter6/item34/PayrollDay.java b/src/main/java/effectivejava/chapter6/item34/PayrollDay.java similarity index 100% rename from src/effectivejava/chapter6/item34/PayrollDay.java rename to src/main/java/effectivejava/chapter6/item34/PayrollDay.java diff --git a/src/effectivejava/chapter6/item34/Planet.java b/src/main/java/effectivejava/chapter6/item34/Planet.java similarity index 100% rename from src/effectivejava/chapter6/item34/Planet.java rename to src/main/java/effectivejava/chapter6/item34/Planet.java diff --git a/src/effectivejava/chapter6/item34/WeightTable.java b/src/main/java/effectivejava/chapter6/item34/WeightTable.java similarity index 100% rename from src/effectivejava/chapter6/item34/WeightTable.java rename to src/main/java/effectivejava/chapter6/item34/WeightTable.java diff --git a/src/effectivejava/chapter6/item35/Ensemble.java b/src/main/java/effectivejava/chapter6/item35/Ensemble.java similarity index 100% rename from src/effectivejava/chapter6/item35/Ensemble.java rename to src/main/java/effectivejava/chapter6/item35/Ensemble.java diff --git a/src/effectivejava/chapter6/item36/Text.java b/src/main/java/effectivejava/chapter6/item36/Text.java similarity index 100% rename from src/effectivejava/chapter6/item36/Text.java rename to src/main/java/effectivejava/chapter6/item36/Text.java diff --git a/src/effectivejava/chapter6/item37/Phase.java b/src/main/java/effectivejava/chapter6/item37/Phase.java similarity index 100% rename from src/effectivejava/chapter6/item37/Phase.java rename to src/main/java/effectivejava/chapter6/item37/Phase.java diff --git a/src/effectivejava/chapter6/item37/Plant.java b/src/main/java/effectivejava/chapter6/item37/Plant.java similarity index 100% rename from src/effectivejava/chapter6/item37/Plant.java rename to src/main/java/effectivejava/chapter6/item37/Plant.java diff --git a/src/effectivejava/chapter6/item38/BasicOperation.java b/src/main/java/effectivejava/chapter6/item38/BasicOperation.java similarity index 100% rename from src/effectivejava/chapter6/item38/BasicOperation.java rename to src/main/java/effectivejava/chapter6/item38/BasicOperation.java diff --git a/src/effectivejava/chapter6/item38/ExtendedOperation.java b/src/main/java/effectivejava/chapter6/item38/ExtendedOperation.java similarity index 100% rename from src/effectivejava/chapter6/item38/ExtendedOperation.java rename to src/main/java/effectivejava/chapter6/item38/ExtendedOperation.java diff --git a/src/effectivejava/chapter6/item38/Operation.java b/src/main/java/effectivejava/chapter6/item38/Operation.java similarity index 100% rename from src/effectivejava/chapter6/item38/Operation.java rename to src/main/java/effectivejava/chapter6/item38/Operation.java diff --git a/src/effectivejava/chapter6/item39/annotationwitharrayparameter/ExceptionTest.java b/src/main/java/effectivejava/chapter6/item39/annotationwitharrayparameter/ExceptionTest.java similarity index 100% rename from src/effectivejava/chapter6/item39/annotationwitharrayparameter/ExceptionTest.java rename to src/main/java/effectivejava/chapter6/item39/annotationwitharrayparameter/ExceptionTest.java diff --git a/src/effectivejava/chapter6/item39/annotationwitharrayparameter/RunTests.java b/src/main/java/effectivejava/chapter6/item39/annotationwitharrayparameter/RunTests.java similarity index 100% rename from src/effectivejava/chapter6/item39/annotationwitharrayparameter/RunTests.java rename to src/main/java/effectivejava/chapter6/item39/annotationwitharrayparameter/RunTests.java diff --git a/src/effectivejava/chapter6/item39/annotationwitharrayparameter/Sample3.java b/src/main/java/effectivejava/chapter6/item39/annotationwitharrayparameter/Sample3.java similarity index 100% rename from src/effectivejava/chapter6/item39/annotationwitharrayparameter/Sample3.java rename to src/main/java/effectivejava/chapter6/item39/annotationwitharrayparameter/Sample3.java diff --git a/src/effectivejava/chapter6/item39/annotationwithparameter/ExceptionTest.java b/src/main/java/effectivejava/chapter6/item39/annotationwithparameter/ExceptionTest.java similarity index 100% rename from src/effectivejava/chapter6/item39/annotationwithparameter/ExceptionTest.java rename to src/main/java/effectivejava/chapter6/item39/annotationwithparameter/ExceptionTest.java diff --git a/src/effectivejava/chapter6/item39/annotationwithparameter/RunTests.java b/src/main/java/effectivejava/chapter6/item39/annotationwithparameter/RunTests.java similarity index 100% rename from src/effectivejava/chapter6/item39/annotationwithparameter/RunTests.java rename to src/main/java/effectivejava/chapter6/item39/annotationwithparameter/RunTests.java diff --git a/src/effectivejava/chapter6/item39/annotationwithparameter/Sample2.java b/src/main/java/effectivejava/chapter6/item39/annotationwithparameter/Sample2.java similarity index 100% rename from src/effectivejava/chapter6/item39/annotationwithparameter/Sample2.java rename to src/main/java/effectivejava/chapter6/item39/annotationwithparameter/Sample2.java diff --git a/src/effectivejava/chapter6/item39/markerannotation/RunTests.java b/src/main/java/effectivejava/chapter6/item39/markerannotation/RunTests.java similarity index 100% rename from src/effectivejava/chapter6/item39/markerannotation/RunTests.java rename to src/main/java/effectivejava/chapter6/item39/markerannotation/RunTests.java diff --git a/src/effectivejava/chapter6/item39/markerannotation/Sample.java b/src/main/java/effectivejava/chapter6/item39/markerannotation/Sample.java similarity index 100% rename from src/effectivejava/chapter6/item39/markerannotation/Sample.java rename to src/main/java/effectivejava/chapter6/item39/markerannotation/Sample.java diff --git a/src/effectivejava/chapter6/item39/markerannotation/Test.java b/src/main/java/effectivejava/chapter6/item39/markerannotation/Test.java similarity index 100% rename from src/effectivejava/chapter6/item39/markerannotation/Test.java rename to src/main/java/effectivejava/chapter6/item39/markerannotation/Test.java diff --git a/src/effectivejava/chapter6/item39/repeatableannotation/ExceptionTest.java b/src/main/java/effectivejava/chapter6/item39/repeatableannotation/ExceptionTest.java similarity index 100% rename from src/effectivejava/chapter6/item39/repeatableannotation/ExceptionTest.java rename to src/main/java/effectivejava/chapter6/item39/repeatableannotation/ExceptionTest.java diff --git a/src/effectivejava/chapter6/item39/repeatableannotation/ExceptionTestContainer.java b/src/main/java/effectivejava/chapter6/item39/repeatableannotation/ExceptionTestContainer.java similarity index 100% rename from src/effectivejava/chapter6/item39/repeatableannotation/ExceptionTestContainer.java rename to src/main/java/effectivejava/chapter6/item39/repeatableannotation/ExceptionTestContainer.java diff --git a/src/effectivejava/chapter6/item39/repeatableannotation/RunTests.java b/src/main/java/effectivejava/chapter6/item39/repeatableannotation/RunTests.java similarity index 100% rename from src/effectivejava/chapter6/item39/repeatableannotation/RunTests.java rename to src/main/java/effectivejava/chapter6/item39/repeatableannotation/RunTests.java diff --git a/src/effectivejava/chapter6/item39/repeatableannotation/Sample4.java b/src/main/java/effectivejava/chapter6/item39/repeatableannotation/Sample4.java similarity index 100% rename from src/effectivejava/chapter6/item39/repeatableannotation/Sample4.java rename to src/main/java/effectivejava/chapter6/item39/repeatableannotation/Sample4.java diff --git a/src/effectivejava/chapter6/item40/Bigram.java b/src/main/java/effectivejava/chapter6/item40/Bigram.java similarity index 100% rename from src/effectivejava/chapter6/item40/Bigram.java rename to src/main/java/effectivejava/chapter6/item40/Bigram.java diff --git a/src/effectivejava/chapter6/item40/Bigram2.java b/src/main/java/effectivejava/chapter6/item40/Bigram2.java similarity index 100% rename from src/effectivejava/chapter6/item40/Bigram2.java rename to src/main/java/effectivejava/chapter6/item40/Bigram2.java diff --git a/src/effectivejava/chapter7/item42/Operation.java b/src/main/java/effectivejava/chapter7/item42/Operation.java similarity index 100% rename from src/effectivejava/chapter7/item42/Operation.java rename to src/main/java/effectivejava/chapter7/item42/Operation.java diff --git a/src/effectivejava/chapter7/item42/SortFourWays.java b/src/main/java/effectivejava/chapter7/item42/SortFourWays.java similarity index 100% rename from src/effectivejava/chapter7/item42/SortFourWays.java rename to src/main/java/effectivejava/chapter7/item42/SortFourWays.java diff --git a/src/effectivejava/chapter7/item43/Freq.java b/src/main/java/effectivejava/chapter7/item43/Freq.java similarity index 100% rename from src/effectivejava/chapter7/item43/Freq.java rename to src/main/java/effectivejava/chapter7/item43/Freq.java diff --git a/src/effectivejava/chapter7/item45/Card.java b/src/main/java/effectivejava/chapter7/item45/Card.java similarity index 100% rename from src/effectivejava/chapter7/item45/Card.java rename to src/main/java/effectivejava/chapter7/item45/Card.java diff --git a/src/effectivejava/chapter7/item45/CharStream.java b/src/main/java/effectivejava/chapter7/item45/CharStream.java similarity index 100% rename from src/effectivejava/chapter7/item45/CharStream.java rename to src/main/java/effectivejava/chapter7/item45/CharStream.java diff --git a/src/effectivejava/chapter7/item45/MersennePrimes.java b/src/main/java/effectivejava/chapter7/item45/MersennePrimes.java similarity index 100% rename from src/effectivejava/chapter7/item45/MersennePrimes.java rename to src/main/java/effectivejava/chapter7/item45/MersennePrimes.java diff --git a/src/effectivejava/chapter7/item45/anagrams/HybridAnagrams.java b/src/main/java/effectivejava/chapter7/item45/anagrams/HybridAnagrams.java similarity index 100% rename from src/effectivejava/chapter7/item45/anagrams/HybridAnagrams.java rename to src/main/java/effectivejava/chapter7/item45/anagrams/HybridAnagrams.java diff --git a/src/effectivejava/chapter7/item45/anagrams/IterativeAnagrams.java b/src/main/java/effectivejava/chapter7/item45/anagrams/IterativeAnagrams.java similarity index 100% rename from src/effectivejava/chapter7/item45/anagrams/IterativeAnagrams.java rename to src/main/java/effectivejava/chapter7/item45/anagrams/IterativeAnagrams.java diff --git a/src/effectivejava/chapter7/item45/anagrams/StreamAnagrams.java b/src/main/java/effectivejava/chapter7/item45/anagrams/StreamAnagrams.java similarity index 100% rename from src/effectivejava/chapter7/item45/anagrams/StreamAnagrams.java rename to src/main/java/effectivejava/chapter7/item45/anagrams/StreamAnagrams.java diff --git a/src/effectivejava/chapter7/item46/Freq.java b/src/main/java/effectivejava/chapter7/item46/Freq.java similarity index 100% rename from src/effectivejava/chapter7/item46/Freq.java rename to src/main/java/effectivejava/chapter7/item46/Freq.java diff --git a/src/effectivejava/chapter7/item47/Adapters.java b/src/main/java/effectivejava/chapter7/item47/Adapters.java similarity index 100% rename from src/effectivejava/chapter7/item47/Adapters.java rename to src/main/java/effectivejava/chapter7/item47/Adapters.java diff --git a/src/effectivejava/chapter7/item47/PowerSet.java b/src/main/java/effectivejava/chapter7/item47/PowerSet.java similarity index 100% rename from src/effectivejava/chapter7/item47/PowerSet.java rename to src/main/java/effectivejava/chapter7/item47/PowerSet.java diff --git a/src/effectivejava/chapter7/item47/SubLists.java b/src/main/java/effectivejava/chapter7/item47/SubLists.java similarity index 100% rename from src/effectivejava/chapter7/item47/SubLists.java rename to src/main/java/effectivejava/chapter7/item47/SubLists.java diff --git a/src/effectivejava/chapter7/item48/ParallelMersennePrimes.java b/src/main/java/effectivejava/chapter7/item48/ParallelMersennePrimes.java similarity index 100% rename from src/effectivejava/chapter7/item48/ParallelMersennePrimes.java rename to src/main/java/effectivejava/chapter7/item48/ParallelMersennePrimes.java diff --git a/src/effectivejava/chapter7/item48/ParallelPrimeCounting.java b/src/main/java/effectivejava/chapter7/item48/ParallelPrimeCounting.java similarity index 100% rename from src/effectivejava/chapter7/item48/ParallelPrimeCounting.java rename to src/main/java/effectivejava/chapter7/item48/ParallelPrimeCounting.java diff --git a/src/effectivejava/chapter8/item50/Attacks.java b/src/main/java/effectivejava/chapter8/item50/Attacks.java similarity index 100% rename from src/effectivejava/chapter8/item50/Attacks.java rename to src/main/java/effectivejava/chapter8/item50/Attacks.java diff --git a/src/effectivejava/chapter8/item50/Period.java b/src/main/java/effectivejava/chapter8/item50/Period.java similarity index 100% rename from src/effectivejava/chapter8/item50/Period.java rename to src/main/java/effectivejava/chapter8/item50/Period.java diff --git a/src/effectivejava/chapter8/item52/Champagne.java b/src/main/java/effectivejava/chapter8/item52/Champagne.java similarity index 100% rename from src/effectivejava/chapter8/item52/Champagne.java rename to src/main/java/effectivejava/chapter8/item52/Champagne.java diff --git a/src/effectivejava/chapter8/item52/CollectionClassifier.java b/src/main/java/effectivejava/chapter8/item52/CollectionClassifier.java similarity index 100% rename from src/effectivejava/chapter8/item52/CollectionClassifier.java rename to src/main/java/effectivejava/chapter8/item52/CollectionClassifier.java diff --git a/src/effectivejava/chapter8/item52/FixedCollectionClassifier.java b/src/main/java/effectivejava/chapter8/item52/FixedCollectionClassifier.java similarity index 100% rename from src/effectivejava/chapter8/item52/FixedCollectionClassifier.java rename to src/main/java/effectivejava/chapter8/item52/FixedCollectionClassifier.java diff --git a/src/effectivejava/chapter8/item52/Overriding.java b/src/main/java/effectivejava/chapter8/item52/Overriding.java similarity index 100% rename from src/effectivejava/chapter8/item52/Overriding.java rename to src/main/java/effectivejava/chapter8/item52/Overriding.java diff --git a/src/effectivejava/chapter8/item52/SetList.java b/src/main/java/effectivejava/chapter8/item52/SetList.java similarity index 100% rename from src/effectivejava/chapter8/item52/SetList.java rename to src/main/java/effectivejava/chapter8/item52/SetList.java diff --git a/src/effectivejava/chapter8/item52/SparklingWine.java b/src/main/java/effectivejava/chapter8/item52/SparklingWine.java similarity index 100% rename from src/effectivejava/chapter8/item52/SparklingWine.java rename to src/main/java/effectivejava/chapter8/item52/SparklingWine.java diff --git a/src/effectivejava/chapter8/item52/Wine.java b/src/main/java/effectivejava/chapter8/item52/Wine.java similarity index 100% rename from src/effectivejava/chapter8/item52/Wine.java rename to src/main/java/effectivejava/chapter8/item52/Wine.java diff --git a/src/effectivejava/chapter8/item53/Varargs.java b/src/main/java/effectivejava/chapter8/item53/Varargs.java similarity index 100% rename from src/effectivejava/chapter8/item53/Varargs.java rename to src/main/java/effectivejava/chapter8/item53/Varargs.java diff --git a/src/effectivejava/chapter8/item55/Max.java b/src/main/java/effectivejava/chapter8/item55/Max.java similarity index 100% rename from src/effectivejava/chapter8/item55/Max.java rename to src/main/java/effectivejava/chapter8/item55/Max.java diff --git a/src/effectivejava/chapter8/item55/ParentPid.java b/src/main/java/effectivejava/chapter8/item55/ParentPid.java similarity index 100% rename from src/effectivejava/chapter8/item55/ParentPid.java rename to src/main/java/effectivejava/chapter8/item55/ParentPid.java diff --git a/src/effectivejava/chapter8/item56/DocExamples.java b/src/main/java/effectivejava/chapter8/item56/DocExamples.java similarity index 100% rename from src/effectivejava/chapter8/item56/DocExamples.java rename to src/main/java/effectivejava/chapter8/item56/DocExamples.java diff --git a/src/effectivejava/chapter9/item58/Card.java b/src/main/java/effectivejava/chapter9/item58/Card.java similarity index 100% rename from src/effectivejava/chapter9/item58/Card.java rename to src/main/java/effectivejava/chapter9/item58/Card.java diff --git a/src/effectivejava/chapter9/item58/DiceRolls.java b/src/main/java/effectivejava/chapter9/item58/DiceRolls.java similarity index 100% rename from src/effectivejava/chapter9/item58/DiceRolls.java rename to src/main/java/effectivejava/chapter9/item58/DiceRolls.java diff --git a/src/effectivejava/chapter9/item59/Curl.java b/src/main/java/effectivejava/chapter9/item59/Curl.java similarity index 100% rename from src/effectivejava/chapter9/item59/Curl.java rename to src/main/java/effectivejava/chapter9/item59/Curl.java diff --git a/src/effectivejava/chapter9/item59/RandomBug.java b/src/main/java/effectivejava/chapter9/item59/RandomBug.java similarity index 100% rename from src/effectivejava/chapter9/item59/RandomBug.java rename to src/main/java/effectivejava/chapter9/item59/RandomBug.java diff --git a/src/effectivejava/chapter9/item60/BigDecimalChange.java b/src/main/java/effectivejava/chapter9/item60/BigDecimalChange.java similarity index 100% rename from src/effectivejava/chapter9/item60/BigDecimalChange.java rename to src/main/java/effectivejava/chapter9/item60/BigDecimalChange.java diff --git a/src/effectivejava/chapter9/item60/Change.java b/src/main/java/effectivejava/chapter9/item60/Change.java similarity index 100% rename from src/effectivejava/chapter9/item60/Change.java rename to src/main/java/effectivejava/chapter9/item60/Change.java diff --git a/src/effectivejava/chapter9/item60/IntChange.java b/src/main/java/effectivejava/chapter9/item60/IntChange.java similarity index 100% rename from src/effectivejava/chapter9/item60/IntChange.java rename to src/main/java/effectivejava/chapter9/item60/IntChange.java diff --git a/src/effectivejava/chapter9/item61/BrokenComparator.java b/src/main/java/effectivejava/chapter9/item61/BrokenComparator.java similarity index 100% rename from src/effectivejava/chapter9/item61/BrokenComparator.java rename to src/main/java/effectivejava/chapter9/item61/BrokenComparator.java diff --git a/src/effectivejava/chapter9/item61/Unbelievable.java b/src/main/java/effectivejava/chapter9/item61/Unbelievable.java similarity index 100% rename from src/effectivejava/chapter9/item61/Unbelievable.java rename to src/main/java/effectivejava/chapter9/item61/Unbelievable.java diff --git a/src/effectivejava/chapter9/item65/ReflectiveInstantiation.java b/src/main/java/effectivejava/chapter9/item65/ReflectiveInstantiation.java similarity index 100% rename from src/effectivejava/chapter9/item65/ReflectiveInstantiation.java rename to src/main/java/effectivejava/chapter9/item65/ReflectiveInstantiation.java From 9d16776000af060c452c34e81b1229d66884c65f Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Wed, 19 Dec 2018 01:17:56 +0300 Subject: [PATCH 02/16] Item 8 and Item 2 has changed --- .../item2/question/NutritionFacts.java | 18 ++++++++++++++++++ .../chapter2/item8/question/Adult.java | 10 ++++++++++ .../chapter2/item8/question/Room.java | 19 +++++++++++++++++++ .../chapter2/item8/question/Teenager.java | 10 ++++++++++ 4 files changed, 57 insertions(+) create mode 100644 src/main/java/effectivejava/chapter2/item2/question/NutritionFacts.java create mode 100644 src/main/java/effectivejava/chapter2/item8/question/Adult.java create mode 100644 src/main/java/effectivejava/chapter2/item8/question/Room.java create mode 100644 src/main/java/effectivejava/chapter2/item8/question/Teenager.java diff --git a/src/main/java/effectivejava/chapter2/item2/question/NutritionFacts.java b/src/main/java/effectivejava/chapter2/item2/question/NutritionFacts.java new file mode 100644 index 00000000..4f00435e --- /dev/null +++ b/src/main/java/effectivejava/chapter2/item2/question/NutritionFacts.java @@ -0,0 +1,18 @@ +package effectivejava.chapter2.item2.question; + +// Builder Pattern (Page 13) +// TODO initialize the class +public class NutritionFacts { + private final int servingSize = 0; + private final int servings = 0 ; + private final int calories = 0; // optional + private final int fat = 0; // optional + private final int sodium = 0; // optional + private final int carbohydrate = 0; // optional + + + public static void main(String[] args) { + NutritionFacts nutritionFacts = new NutritionFacts(); + System.out.println(nutritionFacts); + } +} \ No newline at end of file diff --git a/src/main/java/effectivejava/chapter2/item8/question/Adult.java b/src/main/java/effectivejava/chapter2/item8/question/Adult.java new file mode 100644 index 00000000..bc747148 --- /dev/null +++ b/src/main/java/effectivejava/chapter2/item8/question/Adult.java @@ -0,0 +1,10 @@ +package effectivejava.chapter2.item8.question; + +// Well-behaved client of resource with cleaner safety-net (Page 33) +public class Adult { + public static void main(String[] args) { + try (Room myRoom = new Room(7)) { + System.out.println("Goodbye"); + } + } +} diff --git a/src/main/java/effectivejava/chapter2/item8/question/Room.java b/src/main/java/effectivejava/chapter2/item8/question/Room.java new file mode 100644 index 00000000..6a36e30b --- /dev/null +++ b/src/main/java/effectivejava/chapter2/item8/question/Room.java @@ -0,0 +1,19 @@ +package effectivejava.chapter2.item8.question; + +import java.lang.ref.Cleaner; + +// An autocloseable class using a cleaner as a safety net (Page 32) +public class Room implements AutoCloseable { + + + int numJunkPiles; // Number of junk piles in this room + + public Room(int numJunkPiles) { + this.numJunkPiles = numJunkPiles; + } + + @Override public void close() { + System.out.println("Cleaning room"); + numJunkPiles = 0; // Number of junk piles in this room + } +} diff --git a/src/main/java/effectivejava/chapter2/item8/question/Teenager.java b/src/main/java/effectivejava/chapter2/item8/question/Teenager.java new file mode 100644 index 00000000..acfd454b --- /dev/null +++ b/src/main/java/effectivejava/chapter2/item8/question/Teenager.java @@ -0,0 +1,10 @@ +package effectivejava.chapter2.item8.question; + +// Ill-behaved client of resource with cleaner safety-net (Page 33) +public class Teenager { + public static void main(String[] args) { + new Room(99); + System.out.println("Peace out"); + + } +} From 2f39253d823d24b807eca013c4640643f837b105 Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Wed, 19 Dec 2018 15:25:21 +0300 Subject: [PATCH 03/16] Work on Item 2 --- .../effectivejava/chapter2/item2/javabeans/NutritionFacts.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/effectivejava/chapter2/item2/javabeans/NutritionFacts.java b/src/main/java/effectivejava/chapter2/item2/javabeans/NutritionFacts.java index a5e4d81f..403c4287 100644 --- a/src/main/java/effectivejava/chapter2/item2/javabeans/NutritionFacts.java +++ b/src/main/java/effectivejava/chapter2/item2/javabeans/NutritionFacts.java @@ -1,6 +1,7 @@ package effectivejava.chapter2.item2.javabeans; // JavaBeans Pattern - allows inconsistency, mandates mutability (pages 11-12) +// the JavaBeans pattern precludes the possibility of making a class immutable public class NutritionFacts { // Parameters initialized to default values (if any) private int servingSize = -1; // Required; no default value From d6f2707919666f5d16ed14132de23d1a77f5a9e9 Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Wed, 19 Dec 2018 17:03:38 +0300 Subject: [PATCH 04/16] Work on Item 6 --- .../java/effectivejava/chapter2/item6/RomanNumerals.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/effectivejava/chapter2/item6/RomanNumerals.java b/src/main/java/effectivejava/chapter2/item6/RomanNumerals.java index bf451409..aa2d184e 100644 --- a/src/main/java/effectivejava/chapter2/item6/RomanNumerals.java +++ b/src/main/java/effectivejava/chapter2/item6/RomanNumerals.java @@ -19,6 +19,11 @@ static boolean isRomanNumeralFast(String s) { } public static void main(String[] args) { + + String s = new String("bikini"); // // DON'T DO THIS! + + String v = "bikini" ; // The improved version i + int numSets = Integer.parseInt(args[0]); int numReps = Integer.parseInt(args[1]); boolean b = false; From 746322cfb062df3071f0a4e499393f1ca646d956 Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Wed, 19 Dec 2018 17:23:11 +0300 Subject: [PATCH 05/16] Work on Item 6 --- .../java/effectivejava/chapter2/item6/RomanNumerals.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/effectivejava/chapter2/item6/RomanNumerals.java b/src/main/java/effectivejava/chapter2/item6/RomanNumerals.java index aa2d184e..cafa9f4f 100644 --- a/src/main/java/effectivejava/chapter2/item6/RomanNumerals.java +++ b/src/main/java/effectivejava/chapter2/item6/RomanNumerals.java @@ -26,20 +26,18 @@ public static void main(String[] args) { int numSets = Integer.parseInt(args[0]); int numReps = Integer.parseInt(args[1]); - boolean b = false; + for (int i = 0; i < numSets; i++) { long start = System.nanoTime(); for (int j = 0; j < numReps; j++) { - b ^= isRomanNumeralSlow("MCMLXXVI"); // Change Slow to Fast to see performance difference + isRomanNumeralSlow("MCMLXXVI"); // Change Slow to Fast to see performance difference } long end = System.nanoTime(); System.out.println(((end - start) / (1_000. * numReps)) + " μs."); } - // Prevents VM from optimizing away everything. - if (!b) - System.out.println(); + } } From 2fef50fa8f15a42693f7a770102407bb59f2d83d Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Wed, 19 Dec 2018 19:08:26 +0300 Subject: [PATCH 06/16] Work on Item 11 --- src/main/java/effectivejava/chapter3/item11/PhoneNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/effectivejava/chapter3/item11/PhoneNumber.java b/src/main/java/effectivejava/chapter3/item11/PhoneNumber.java index 084f1e95..b9e9c216 100644 --- a/src/main/java/effectivejava/chapter3/item11/PhoneNumber.java +++ b/src/main/java/effectivejava/chapter3/item11/PhoneNumber.java @@ -38,7 +38,7 @@ private static short rangeCheck(int val, int max, String arg) { // return result; // } -// // One-line hashCode method - mediocre performance (page 53) +// // One-line hashCode method - mediocre (not very good) performance (page 53) // @Override public int hashCode() { // return Objects.hash(lineNum, prefix, areaCode); // } From 857997bb1aae6a6c7612c5b2d539fa1114c374a8 Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Wed, 19 Dec 2018 20:04:18 +0300 Subject: [PATCH 07/16] item 42 changed for master --- .../chapter7/item42/SortFourWays.java | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/src/main/java/effectivejava/chapter7/item42/SortFourWays.java b/src/main/java/effectivejava/chapter7/item42/SortFourWays.java index 84b77371..d7595358 100644 --- a/src/main/java/effectivejava/chapter7/item42/SortFourWays.java +++ b/src/main/java/effectivejava/chapter7/item42/SortFourWays.java @@ -13,28 +13,7 @@ public class SortFourWays { public static void main(String[] args) { List words = Arrays.asList(args); - // Anonymous class instance as a function object - obsolete! (Page 193) - Collections.sort(words, new Comparator() { - public int compare(String s1, String s2) { - return Integer.compare(s1.length(), s2.length()); - } - }); - System.out.println(words); - Collections.shuffle(words); + // TODO : sort according to String length - // Lambda expression as function object (replaces anonymous class) (Page 194) - Collections.sort(words, - (s1, s2) -> Integer.compare(s1.length(), s2.length())); - System.out.println(words); - Collections.shuffle(words); - - // Comparator construction method (with method reference) in place of lambda (Page 194) - Collections.sort(words, comparingInt(String::length)); - System.out.println(words); - Collections.shuffle(words); - - // Default method List.sort in conjunction with comparator construction method (Page 194) - words.sort(comparingInt(String::length)); - System.out.println(words); } } From 56caa854c88ab256661151af474e7aef0ad1af94 Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Wed, 19 Dec 2018 20:26:56 +0300 Subject: [PATCH 08/16] back to original --- src/main/java/effectivejava/chapter7/item42/Operation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/effectivejava/chapter7/item42/Operation.java b/src/main/java/effectivejava/chapter7/item42/Operation.java index 2a568812..0eb02ad1 100644 --- a/src/main/java/effectivejava/chapter7/item42/Operation.java +++ b/src/main/java/effectivejava/chapter7/item42/Operation.java @@ -23,7 +23,7 @@ public double apply(double x, double y) { return op.applyAsDouble(x, y); } - // Main method from Item 34 (Page 163) + // Main method from Item 34 (Page 163) . public static void main(String[] args) { double x = Double.parseDouble(args[0]); double y = Double.parseDouble(args[1]); From 0b172120b9740e2afb530cc11af4a1291493610b Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Thu, 20 Dec 2018 13:42:25 +0300 Subject: [PATCH 09/16] item 9 --- .../chapter2/item9/trywithresources/Copy.java | 24 ------------------- .../item9/trywithresources/TopLine.java | 21 ---------------- .../trywithresources/TopLineWithDefault.java | 23 ------------------ 3 files changed, 68 deletions(-) delete mode 100644 src/main/java/effectivejava/chapter2/item9/trywithresources/Copy.java delete mode 100644 src/main/java/effectivejava/chapter2/item9/trywithresources/TopLine.java delete mode 100644 src/main/java/effectivejava/chapter2/item9/trywithresources/TopLineWithDefault.java diff --git a/src/main/java/effectivejava/chapter2/item9/trywithresources/Copy.java b/src/main/java/effectivejava/chapter2/item9/trywithresources/Copy.java deleted file mode 100644 index 15a77dfb..00000000 --- a/src/main/java/effectivejava/chapter2/item9/trywithresources/Copy.java +++ /dev/null @@ -1,24 +0,0 @@ -package effectivejava.chapter2.item9.trywithresources; - -import java.io.*; - -public class Copy { - private static final int BUFFER_SIZE = 8 * 1024; - - // try-with-resources on multiple resources - short and sweet (Page 35) - static void copy(String src, String dst) throws IOException { - try (InputStream in = new FileInputStream(src); - OutputStream out = new FileOutputStream(dst)) { - byte[] buf = new byte[BUFFER_SIZE]; - int n; - while ((n = in.read(buf)) >= 0) - out.write(buf, 0, n); - } - } - - public static void main(String[] args) throws IOException { - String src = args[0]; - String dst = args[1]; - copy(src, dst); - } -} diff --git a/src/main/java/effectivejava/chapter2/item9/trywithresources/TopLine.java b/src/main/java/effectivejava/chapter2/item9/trywithresources/TopLine.java deleted file mode 100644 index ea714ac7..00000000 --- a/src/main/java/effectivejava/chapter2/item9/trywithresources/TopLine.java +++ /dev/null @@ -1,21 +0,0 @@ -package effectivejava.chapter2.item9.trywithresources; - - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; - -public class TopLine { - // try-with-resources - the the best way to close resources! (Page 35) - static String firstLineOfFile(String path) throws IOException { - try (BufferedReader br = new BufferedReader( - new FileReader(path))) { - return br.readLine(); - } - } - - public static void main(String[] args) throws IOException { - String path = args[0]; - System.out.println(firstLineOfFile(path)); - } -} diff --git a/src/main/java/effectivejava/chapter2/item9/trywithresources/TopLineWithDefault.java b/src/main/java/effectivejava/chapter2/item9/trywithresources/TopLineWithDefault.java deleted file mode 100644 index f51334c0..00000000 --- a/src/main/java/effectivejava/chapter2/item9/trywithresources/TopLineWithDefault.java +++ /dev/null @@ -1,23 +0,0 @@ -package effectivejava.chapter2.item9.trywithresources; - - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; - -public class TopLineWithDefault { - // try-with-resources with a catch clause (Page 36) - static String firstLineOfFile(String path, String defaultVal) { - try (BufferedReader br = new BufferedReader( - new FileReader(path))) { - return br.readLine(); - } catch (IOException e) { - return defaultVal; - } - } - - public static void main(String[] args) throws IOException { - String path = args[0]; - System.out.println(firstLineOfFile(path, "Toppy McTopFace")); - } -} From 0ad7d3bb699abd0c81a144949094f4caa182a3ad Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Thu, 20 Dec 2018 14:19:05 +0300 Subject: [PATCH 10/16] Calcutaion added to item 60 --- .../java/effectivejava/chapter9/item60/Calculator.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/effectivejava/chapter9/item60/Calculator.java diff --git a/src/main/java/effectivejava/chapter9/item60/Calculator.java b/src/main/java/effectivejava/chapter9/item60/Calculator.java new file mode 100644 index 00000000..34251ff5 --- /dev/null +++ b/src/main/java/effectivejava/chapter9/item60/Calculator.java @@ -0,0 +1,8 @@ +package effectivejava.chapter9.item60; + +public class Calculator { + + public static void main(String[] args) { + System.out.println(1.03 - 0.42); + } +} From bb193dfa883f2292297cff5c1ce50c8f98457b7f Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Thu, 20 Dec 2018 14:40:27 +0300 Subject: [PATCH 11/16] delete 2 classes from item 60 --- .../chapter9/item60/BigDecimalChange.java | 20 ------------------- .../chapter9/item60/IntChange.java | 14 ------------- 2 files changed, 34 deletions(-) delete mode 100644 src/main/java/effectivejava/chapter9/item60/BigDecimalChange.java delete mode 100644 src/main/java/effectivejava/chapter9/item60/IntChange.java diff --git a/src/main/java/effectivejava/chapter9/item60/BigDecimalChange.java b/src/main/java/effectivejava/chapter9/item60/BigDecimalChange.java deleted file mode 100644 index cfff6af1..00000000 --- a/src/main/java/effectivejava/chapter9/item60/BigDecimalChange.java +++ /dev/null @@ -1,20 +0,0 @@ -package effectivejava.chapter9.item60; - -import java.math.BigDecimal; - -public class BigDecimalChange { - public static void main(String[] args) { - final BigDecimal TEN_CENTS = new BigDecimal(".10"); - - int itemsBought = 0; - BigDecimal funds = new BigDecimal("1.00"); - for (BigDecimal price = TEN_CENTS; - funds.compareTo(price) >= 0; - price = price.add(TEN_CENTS)) { - funds = funds.subtract(price); - itemsBought++; - } - System.out.println(itemsBought + " items bought."); - System.out.println("Money left over: $" + funds); - } -} diff --git a/src/main/java/effectivejava/chapter9/item60/IntChange.java b/src/main/java/effectivejava/chapter9/item60/IntChange.java deleted file mode 100644 index 14819d61..00000000 --- a/src/main/java/effectivejava/chapter9/item60/IntChange.java +++ /dev/null @@ -1,14 +0,0 @@ -package effectivejava.chapter9.item60; - -public class IntChange { - public static void main(String[] args) { - int itemsBought = 0; - int funds = 100; - for (int price = 10; funds >= price; price += 10) { - funds -= price; - itemsBought++; - } - System.out.println(itemsBought + " items bought."); - System.out.println("Cash left over: " + funds + " cents"); - } -} From f6b3002dbea5f4214ef8ebf554a7189e5d536090 Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Mon, 24 Dec 2018 14:40:25 +0300 Subject: [PATCH 12/16] Item 6 comments are added --- .../java/effectivejava/chapter4/item17/Complex.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/effectivejava/chapter4/item17/Complex.java b/src/main/java/effectivejava/chapter4/item17/Complex.java index 49d33d81..54e6cc45 100644 --- a/src/main/java/effectivejava/chapter4/item17/Complex.java +++ b/src/main/java/effectivejava/chapter4/item17/Complex.java @@ -1,6 +1,16 @@ package effectivejava.chapter4.item17; // Immutable complex number class (Pages 81-82) + +// 1 - Don’t provide methods that modify the object’s state +// 2 - Ensure that the class can’t be extended +// 3 - Make all fields final. +// 4 - Make all fields private. +// 5 - Ensure exclusive access to any mutable components +// 6 - Immutable objects are simple +// 7 - Immutable objects are inherently thread-safe; they require no synchronization. +// 8 - immutable objects can be shared freely + public final class Complex { private final double re; private final double im; From f5f8918f944214105d3f269894c631b0953d89c7 Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Mon, 24 Dec 2018 14:43:24 +0300 Subject: [PATCH 13/16] minus is deleted for attendees --- src/main/java/effectivejava/chapter4/item17/Complex.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/effectivejava/chapter4/item17/Complex.java b/src/main/java/effectivejava/chapter4/item17/Complex.java index 54e6cc45..e2a60305 100644 --- a/src/main/java/effectivejava/chapter4/item17/Complex.java +++ b/src/main/java/effectivejava/chapter4/item17/Complex.java @@ -36,9 +36,7 @@ public static Complex valueOf(double re, double im) { return new Complex(re, im); } - public Complex minus(Complex c) { - return new Complex(re - c.re, im - c.im); - } + // TODO add minus method public Complex times(Complex c) { return new Complex(re * c.re - im * c.im, From a65494a38e1a5caef637dcd8dcbafe5438c9bb79 Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Mon, 24 Dec 2018 20:26:49 +0300 Subject: [PATCH 14/16] item23 solution is removed from master --- .../chapter4/item23/hierarchy/Circle.java | 10 ---------- .../chapter4/item23/hierarchy/Figure.java | 6 ------ .../chapter4/item23/hierarchy/Rectangle.java | 13 ------------- .../chapter4/item23/hierarchy/Square.java | 8 -------- 4 files changed, 37 deletions(-) delete mode 100644 src/main/java/effectivejava/chapter4/item23/hierarchy/Circle.java delete mode 100644 src/main/java/effectivejava/chapter4/item23/hierarchy/Figure.java delete mode 100644 src/main/java/effectivejava/chapter4/item23/hierarchy/Rectangle.java delete mode 100644 src/main/java/effectivejava/chapter4/item23/hierarchy/Square.java diff --git a/src/main/java/effectivejava/chapter4/item23/hierarchy/Circle.java b/src/main/java/effectivejava/chapter4/item23/hierarchy/Circle.java deleted file mode 100644 index 6b7017a5..00000000 --- a/src/main/java/effectivejava/chapter4/item23/hierarchy/Circle.java +++ /dev/null @@ -1,10 +0,0 @@ -package effectivejava.chapter4.item23.hierarchy; - -// Class hierarchy replacement for a tagged class (Page 110-11) -class Circle extends Figure { - final double radius; - - Circle(double radius) { this.radius = radius; } - - @Override double area() { return Math.PI * (radius * radius); } -} diff --git a/src/main/java/effectivejava/chapter4/item23/hierarchy/Figure.java b/src/main/java/effectivejava/chapter4/item23/hierarchy/Figure.java deleted file mode 100644 index 1ab39fa0..00000000 --- a/src/main/java/effectivejava/chapter4/item23/hierarchy/Figure.java +++ /dev/null @@ -1,6 +0,0 @@ -package effectivejava.chapter4.item23.hierarchy; - -// Class hierarchy replacement for a tagged class (Page 110-11) -abstract class Figure { - abstract double area(); -} diff --git a/src/main/java/effectivejava/chapter4/item23/hierarchy/Rectangle.java b/src/main/java/effectivejava/chapter4/item23/hierarchy/Rectangle.java deleted file mode 100644 index 090ed053..00000000 --- a/src/main/java/effectivejava/chapter4/item23/hierarchy/Rectangle.java +++ /dev/null @@ -1,13 +0,0 @@ -package effectivejava.chapter4.item23.hierarchy; - -// Class hierarchy replacement for a tagged class (Page 110-11) -class Rectangle extends Figure { - final double length; - final double width; - - Rectangle(double length, double width) { - this.length = length; - this.width = width; - } - @Override double area() { return length * width; } -} \ No newline at end of file diff --git a/src/main/java/effectivejava/chapter4/item23/hierarchy/Square.java b/src/main/java/effectivejava/chapter4/item23/hierarchy/Square.java deleted file mode 100644 index 713f448d..00000000 --- a/src/main/java/effectivejava/chapter4/item23/hierarchy/Square.java +++ /dev/null @@ -1,8 +0,0 @@ -package effectivejava.chapter4.item23.hierarchy; - -// Class hierarchy replacement for a tagged class (Page 110-11) -class Square extends Rectangle { - Square(double side) { - super(side, side); - } -} From ed3cfcc94c83bf3ef8ee4ef7ca8cd7a0a0a0f368 Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Mon, 24 Dec 2018 22:38:22 +0300 Subject: [PATCH 15/16] Item 50 solution is removed --- .../effectivejava/chapter8/item50/Period.java | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/main/java/effectivejava/chapter8/item50/Period.java b/src/main/java/effectivejava/chapter8/item50/Period.java index d3181d9f..048c3997 100644 --- a/src/main/java/effectivejava/chapter8/item50/Period.java +++ b/src/main/java/effectivejava/chapter8/item50/Period.java @@ -31,24 +31,5 @@ public String toString() { return start + " - " + end; } -// // Repaired constructor - makes defensive copies of parameters (Page 232) -// public Period(Date start, Date end) { -// this.start = new Date(start.getTime()); -// this.end = new Date(end.getTime()); -// -// if (this.start.compareTo(this.end) > 0) -// throw new IllegalArgumentException( -// this.start + " after " + this.end); -// } -// -// // Repaired accessors - make defensive copies of internal fields (Page 233) -// public Date start() { -// return new Date(start.getTime()); -// } -// -// public Date end() { -// return new Date(end.getTime()); -// } - // Remainder omitted } \ No newline at end of file From cb6a381f9fbe454449da774c6758c98e71266fed Mon Sep 17 00:00:00 2001 From: "altuga@gmail.com" Date: Mon, 24 Dec 2018 23:04:35 +0300 Subject: [PATCH 16/16] Item 58 solution is removed --- src/main/java/effectivejava/chapter9/item58/Card.java | 5 +---- src/main/java/effectivejava/chapter9/item58/DiceRolls.java | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/effectivejava/chapter9/item58/Card.java b/src/main/java/effectivejava/chapter9/item58/Card.java index a982bd76..fb0df5de 100644 --- a/src/main/java/effectivejava/chapter9/item58/Card.java +++ b/src/main/java/effectivejava/chapter9/item58/Card.java @@ -26,9 +26,6 @@ public static void main(String[] args) { for (Iterator j = ranks.iterator(); j.hasNext(); ) deck.add(new Card(i.next(), j.next())); -// // Preferred idiom for nested iteration on collections and arrays -// for (Suit suit : suits) -// for (Rank rank : ranks) -// deck.add(new Card(suit, rank)); + } } diff --git a/src/main/java/effectivejava/chapter9/item58/DiceRolls.java b/src/main/java/effectivejava/chapter9/item58/DiceRolls.java index 760084ee..5ee2260c 100644 --- a/src/main/java/effectivejava/chapter9/item58/DiceRolls.java +++ b/src/main/java/effectivejava/chapter9/item58/DiceRolls.java @@ -15,8 +15,6 @@ public static void main(String[] args) { System.out.println("***************************"); - for (Face f1 : faces) - for (Face f2 : faces) - System.out.println(f1 + " " + f2); + } }