Skip to content

Commit 1385436

Browse files
committed
Cleaned up Chapter 5 (Generics). Some examples were missing, some extraneous examples were present, and some page numbers were wrong.
1 parent 6d8f83c commit 1385436

21 files changed

+151
-77
lines changed

src/effectivejava/chapter5/item28/Chooser.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import java.util.Random;
77
import java.util.concurrent.ThreadLocalRandom;
88

9-
// List-based Chooser - typesafe (Page 120)
9+
// List-based Chooser - typesafe (Page 129)
1010
public class Chooser<T> {
1111
private final List<T> choiceList;
1212

@@ -18,4 +18,15 @@ public T choose() {
1818
Random rnd = ThreadLocalRandom.current();
1919
return choiceList.get(rnd.nextInt(choiceList.size()));
2020
}
21+
22+
public static void main(String[] args) {
23+
List<Integer> intList = List.of(1, 2, 3, 4, 5, 6);
24+
25+
Chooser<Integer> chooser = new Chooser<>(intList);
26+
27+
for (int i = 0; i < 10; i++) {
28+
Number choice = chooser.choose();
29+
System.out.println(choice);
30+
}
31+
}
2132
}

src/effectivejava/chapter5/item29/technqiue1/Stack.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import java.util.Arrays;
55

6-
// Generic stack using E[] - Pages 130-133
6+
// Generic stack using E[] (Pages 130-3)
77
public class Stack<E> {
88
private E[] elements;
99
private int size = 0;

src/effectivejava/chapter5/item29/technqiue2/Stack.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.Arrays;
44
import effectivejava.chapter5.item29.EmptyStackException;
55

6-
// Generic stack using Object[] - Pages 130-133
6+
// Generic stack using Object[] (Pages 130-3)
77
public class Stack<E> {
88
private Object[] elements;
99
private int size = 0;

src/effectivejava/chapter5/item30/GenericSingletonFactory.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package effectivejava.chapter5.item30;
22

3-
// Generic singleton factory staticfactory - Pages 131-132
4-
53
import java.util.function.UnaryOperator;
64

7-
// Generic singleton factory pattern (Page 136)
5+
// Generic singleton factory pattern (Page 136-7)
86
public class GenericSingletonFactory {
97
// Generic singleton factory pattern
108
private static UnaryOperator<Object> IDENTITY_FN = (t) -> t;

src/effectivejava/chapter5/item30/RecursiveTypeBound.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package effectivejava.chapter5.item30;
22
import java.util.*;
33

4-
// Using a recursive type bound to express mutual comparability - Pages 136-137
4+
// Using a recursive type bound to express mutual comparability (Pages 137-8)
55
public class RecursiveTypeBound {
66
// Returns max value in a collection - uses recursive type bound
77
public static <E extends Comparable<E>> E max(Collection<E> c) {

src/effectivejava/chapter5/item30/Union.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package effectivejava.chapter5.item30;
22
import java.util.*;
33

4-
// Generic union method and program to exercise it - pages 135-6
4+
// Generic union method and program to exercise it (Pages 135-6)
55
public class Union {
66

77
// Generic method

src/effectivejava/chapter5/item32/Chooser.java renamed to src/effectivejava/chapter5/item31/Chooser.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
package effectivejava.chapter5.item32;
1+
package effectivejava.chapter5.item31;
22

33
import java.util.ArrayList;
44
import java.util.Collection;
55
import java.util.List;
66
import java.util.Random;
77

8+
// Wildcard type for parameter that serves as an T producer (page 141)
89
public class Chooser<T> {
910
private final List<T> choiceList;
1011
private final Random rnd = new Random();
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package effectivejava.chapter5.item32;
1+
package effectivejava.chapter5.item31;
22

33
public class EmptyStackException extends RuntimeException {
44
}

src/effectivejava/chapter5/item32/RecursiveTypeBound.java renamed to src/effectivejava/chapter5/item31/RecursiveTypeBound.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package effectivejava.chapter5.item32;
1+
package effectivejava.chapter5.item31;
22
import java.util.*;
33

4-
// Using a recursive type bound with wildcards - Page 138-139
4+
// Using a recursive type bound with wildcards (Page 143)
55
public class RecursiveTypeBound {
66
public static <E extends Comparable<? super E>> E max(
77
List<? extends E> list) {

src/effectivejava/chapter5/item32/Stack.java renamed to src/effectivejava/chapter5/item31/Stack.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package effectivejava.chapter5.item32;
1+
package effectivejava.chapter5.item31;
22
import java.util.*;
33

4-
// Generic stack with bulk methods using wildcard types - Pages 138-140
4+
// Generic stack with bulk methods using wildcard types (Pages 139-41)
55
public class Stack<E> {
66
private E[] elements;
77
private int size = 0;
@@ -63,11 +63,11 @@ public void popAll(Collection<? super E> dst) {
6363

6464
// Little program to exercise our generic Stack
6565
public static void main(String[] args) {
66-
Stack<Number> numberStack = new Stack<Number>();
66+
Stack<Number> numberStack = new Stack<>();
6767
Iterable<Integer> integers = Arrays.asList(3, 1, 4, 1, 5, 9);
6868
numberStack.pushAll(integers);
6969

70-
Collection<Object> objects = new ArrayList<Object>();
70+
Collection<Object> objects = new ArrayList<>();
7171
numberStack.popAll(objects);
7272

7373
System.out.println(objects);

0 commit comments

Comments
 (0)