File tree 1 file changed +12
-4
lines changed
1 file changed +12
-4
lines changed Original file line number Diff line number Diff line change
1
+ 《《《 [ 返回首页] ( ../README.md ) <br />
2
+ 《《《 [ 上一节] ( 02_Static_Members.md )
3
+
1
4
## 嵌套类
2
5
3
6
` Java ` 允许将一个类嵌套在另一个类中。 如果外部类具有类型参数,并且内部类不是静态的,则外部类的类型参数在内部类中可见。
4
7
5
- 例 ` 4-1 ` 显示了一个将集合实现为单链表的类。 该类扩展了 ` java.util.AbstractCollection ` ,所以它只需要定义方法的大小,添加和迭代器。 该类包含一个内部类 ` Node ` ,列表节点和一个实现 ` Iterator<E> ` 的匿名内部类。 类型参数 ` E ` 在这两个类的范围内。
8
+ 例 ` 4-1 ` 显示了一个将集合实现为单链表的类。 该类扩展了 ` java.util.AbstractCollection ` ,所以它只需要定义方法的大小,添加和迭代器。 该类包含一个内部
9
+ 类 ` Node ` ,列表节点和一个实现 ` Iterator<E> ` 的匿名内部类。 类型参数 ` E ` 在这两个类的范围内。
6
10
7
11
例 ` 4-1 ` 。 类型参数在嵌套非静态类的范围内
8
12
44
48
}
45
49
```
46
50
47
- 相比之下,例 ` 4-2 ` 显示了一个类似的实现,但是这次嵌套的 ` Node ` 类是静态的,所以类型参数 ` E ` 不在这个类的范围内。 相反,嵌套类用它自己的类型参数 ` T ` 来声明。 在以前的版本引用节点的地方,新版本引用节点 ` <E> ` 。前面例子中的匿名迭代器类也被嵌套的静态类所取代,它也有自己的类型参数。
51
+ 相比之下,例 ` 4-2 ` 显示了一个类似的实现,但是这次嵌套的 ` Node ` 类是静态的,所以类型参数 ` E ` 不在这个类的范围内。 相反,嵌套类用它自己的类型参数 ` T `
52
+ 来声明。 在以前的版本引用节点的地方,新版本引用节点 ` <E> ` 。前面例子中的匿名迭代器类也被嵌套的静态类所取代,它也有自己的类型参数。
48
53
49
- 如果节点类已被公开而不是私有,那么在第一个示例中将节点类称为 ` LinkedCollection<E>.Node ` ,而将第二个例子中的节点类称为 ` LinkedCollection.Node<E> ` 。
54
+ 如果节点类已被公开而不是私有,那么在第一个示例中将节点类称为 ` LinkedCollection<E>.Node ` ,而将第二个例子中的节点类称 ` LinkedCollection.Node<E> ` 。
50
55
51
56
例 ` 4-2 ` 。 类型参数不在嵌套静态类的范围内
52
57
90
95
}
91
96
```
92
97
93
- 在这里描述的两种替代方案中,第二种是优选的。 非静态的嵌套类通过包含对封装实例的引用来实现,因为它们通常可以访问该实例的组件。 静态嵌套类通常既简单又高效。
98
+ 在这里描述的两种替代方案中,第二种是优选的。 非静态的嵌套类通过包含对封装实例的引用来实现,因为它们通常可以访问该实例的组件。 静态嵌套类通常既简单又
99
+ 高效。
94
100
101
+ 《《《 [ 下一节] ( 04_How_Erasure_Works.md ) <br />
102
+ 《《《 [ 返回首页] ( ../README.md )
95
103
You can’t perform that action at this time.
0 commit comments