Skip to content

Commit 633c2d1

Browse files
authored
Update 03_Generic_Library_with_Legacy_Client.md
1 parent b475901 commit 633c2d1

File tree

1 file changed

+26
-21
lines changed

1 file changed

+26
-21
lines changed

ch05/03_Generic_Library_with_Legacy_Client.md

+26-21
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
《《《 [返回首页](../README.md) <br/>
2+
《《《 [上一节](02_Generic_Library_with_Generic_Client.md)
3+
14
## 具有传统客户端的通用库
25

36
现在让我们考虑一下这种情况,即在客户端保留其旧版本时,库更新为泛型。这可能是因为没有足够的时间一次转换所有内容,或者因为类库和客户由不同的组织控制。
@@ -28,15 +31,15 @@
2831

2932
```java
3033
g/Stack.java:
31-
interface Stack<E> {
32-
public boolean empty();
33-
public void push(E elt);
34-
public E pop();
35-
}
34+
interface Stack<E> {
35+
public boolean empty();
36+
public void push(E elt);
37+
public E pop();
38+
}
3639

3740
g/ArrayStack.java:
38-
import java.util.*;
39-
class ArrayStack<E> implements Stack<E> {
41+
import java.util.*;
42+
class ArrayStack<E> implements Stack<E> {
4043
private List<E> list;
4144
public ArrayStack() { list = new ArrayList<E>(); }
4245
public boolean empty() { return list.size() == 0; }
@@ -48,7 +51,7 @@
4851
public String toString() { return "stack"+list.toString(); }
4952
}
5053

51-
g/Stacks.java:
54+
g/Stacks.java:
5255
class Stacks {
5356
public static <T> Stack<T> reverse(Stack<T> in) {
5457
Stack<T> out = new ArrayStack<T>();
@@ -60,19 +63,19 @@
6063
}
6164
}
6265

63-
g/Client.java:
64-
class Client {
65-
public static void main(String[] args) {
66-
Stack<Integer> stack = new ArrayStack<Integer>();
67-
for (int i = 0; i<4; i++) stack.push(i);
68-
assert stack.toString().equals("stack[0, 1, 2, 3]");
69-
int top = stack.pop();
70-
assert top == 3 && stack.toString().equals("stack[0, 1, 2]");
71-
Stack<Integer> reverse = Stacks.reverse(stack);
72-
assert stack.empty();
73-
assert reverse.toString().equals("stack[2, 1, 0]");
74-
}
75-
}
66+
g/Client.java:
67+
class Client {
68+
public static void main(String[] args) {
69+
Stack<Integer> stack = new ArrayStack<Integer>();
70+
for (int i = 0; i<4; i++) stack.push(i);
71+
assert stack.toString().equals("stack[0, 1, 2, 3]");
72+
int top = stack.pop();
73+
assert top == 3 && stack.toString().equals("stack[0, 1, 2]");
74+
Stack<Integer> reverse = Stacks.reverse(stack);
75+
assert stack.empty();
76+
assert reverse.toString().equals("stack[2, 1, 0]");
77+
}
78+
}
7679
```
7780

7881
如果我们遵循上面的建议,并在启用适当的开关的情况下重新运行编译器,我们会得到更多的细节:
@@ -130,3 +133,5 @@
130133
这编译了遗留代码并且没有发出警告或错误。 这种关闭警告的方法只适用于真正的遗留代码,没有 `Java 5` 中引入的通用功能或其他功能。 也可以使用注释关闭未经
131134
检查的警告,如下一节所述,即使使用 `Java 5` 中引入的功能,也可以使用这些警告。
132135

136+
《《《 [下一节](04_Legacy_Library_with_Generic_Client.md) <br/>
137+
《《《 [返回首页](../README.md)

0 commit comments

Comments
 (0)