|
9 | 9 | public class VisitorLambda { |
10 | 10 |
|
11 | 11 | public static class LambdaVisitor<A> implements Function<Object, A> { |
12 | | - private Map<Class<?>, Function<Object, A>> fMap = new HashMap<>(); |
| 12 | + private final Map<Class<?>, Function<Object, A>> fMap = new HashMap<>(); |
13 | 13 |
|
14 | 14 | @SuppressWarnings(value = "unchecked") |
15 | 15 | public <B> LambdaVisitor<A> addHandler(Class<B> clazz, Function<B, A> handler) { |
@@ -41,24 +41,24 @@ public Circle(double radius) { |
41 | 41 | } |
42 | 42 |
|
43 | 43 | public static class Rectangle { |
44 | | - final double weidht; |
| 44 | + final double width; |
45 | 45 | final double height; |
46 | 46 |
|
47 | | - public Rectangle( double weidht, double height ) { |
48 | | - this.weidht = weidht; |
| 47 | + public Rectangle(double width, double height ) { |
| 48 | + this.width = width; |
49 | 49 | this.height = height; |
50 | 50 | } |
51 | 51 | } |
52 | 52 |
|
53 | 53 | static Function<Object, Double> areaVisitor = new LambdaVisitor<Double>() |
54 | 54 | .addHandler(Square.class, (Square s) -> s.side * s.side ) |
55 | 55 | .addHandler(Circle.class, c -> Math.PI * c.radius * c.radius ) |
56 | | - .addHandler(Rectangle.class, r -> r.height * r.weidht ); |
| 56 | + .addHandler(Rectangle.class, r -> r.height * r.width); |
57 | 57 |
|
58 | 58 | static Function<Object, Double> perimeterVisitor = new LambdaVisitor<Double>() |
59 | 59 | .addHandler(Square.class, s -> 4 * s.side ) |
60 | 60 | .addHandler(Circle.class, c -> 2 * Math.PI * c.radius ) |
61 | | - .addHandler(Rectangle.class, r -> 2 * r.height + 2 * r.weidht ); |
| 61 | + .addHandler(Rectangle.class, r -> 2 * r.height + 2 * r.width); |
62 | 62 |
|
63 | 63 | public static void main( String[] args ) { |
64 | 64 | List<Object> figures = Arrays.asList( new Circle( 4 ), new Square( 5 ), new Rectangle( 6, 7 ) ); |
|
0 commit comments