-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
116 lines (86 loc) · 3.86 KB
/
Solution.java
File metadata and controls
116 lines (86 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
//Jesus said to them, "Bring some of the fish which you have just caught." (John 21:10)
------------------------------------------------------Solution.java------------------------------------------------------------------
package com.javarush.task.task24.task2410;
import java.util.LinkedList;
import java.util.List;
/*
Рефакторинг, анонимные классы
*/
public class Solution {
public static List<Iterator> iterators = new LinkedList<>();
private int countItems;
public Iterator getIterator(final String name) {
return new Iterator() {
{
Solution.this.countItems++;
System.out.println(name + " item " + countItems);
}
@Override
public Iterator next() {
return getIterator(name);
}
};
}
public static void main(String[] args) {
Solution solution = new Solution();
Iterator iterator = solution.getIterator("iterator");
for (int i = 1; i < 5; i++) {
iterators.add(iterator.next());
}
}
}
-------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------Iterator.java------------------------------------------------------------------
package com.javarush.task.task24.task2410;
public interface Iterator {
Iterator next();
}
-------------------------------------------------------------------------------------------------------------------------------------
/*
Рефакторинг, анонимные классы
Сделайте так, чтобы метод getIterator возвращал анонимный класс.
Перенесите логику LocalIterator в анонимный класс.
Меняйте только тело метода getIterator.
Требования:
1. Метод getIterator должен возвращать объект типа Iterator.
2. Объект возвращаемый методом getIterator должен быть экземпляром анонимного класса.
3. Программа должна выводить данные на экран.
4. Логика поведения программы должна остаться прежней.
------------------------------------------------------Solution.java------------------------------------------------------------------
package com.javarush.task.task24.task2410;
import java.util.LinkedList;
import java.util.List;
/*
Рефакторинг, анонимные классы
*/
public class Solution {
public static List<Iterator> iterators = new LinkedList<>();
private int countItems;
public Iterator getIterator(final String name) {
class LocalIterator implements Iterator {
public LocalIterator() {
countItems++;
System.out.println(name + " item " + countItems);
}
public Iterator next() {
return new LocalIterator();
}
}
return new LocalIterator();
}
public static void main(String[] args) {
Solution solution = new Solution();
Iterator iterator = solution.getIterator("iterator");
for (int i = 1; i < 5; i++) {
iterators.add(iterator.next());
}
}
}
-------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------Iterator.java------------------------------------------------------------------
package com.javarush.task.task24.task2410;
public interface Iterator {
Iterator next();
}
-------------------------------------------------------------------------------------------------------------------------------------
*/