Skip to content

Commit 5353048

Browse files
authored
Update 03_Nested_Classes.md
1 parent f9efd43 commit 5353048

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

ch04/03_Nested_Classes.md

+12-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
《《《 [返回首页](../README.md) <br/>
2+
《《《 [上一节](02_Static_Members.md)
3+
14
## 嵌套类
25

36
`Java` 允许将一个类嵌套在另一个类中。 如果外部类具有类型参数,并且内部类不是静态的,则外部类的类型参数在内部类中可见。
47

5-
`4-1` 显示了一个将集合实现为单链表的类。 该类扩展了 `java.util.AbstractCollection`,所以它只需要定义方法的大小,添加和迭代器。 该类包含一个内部类 `Node`,列表节点和一个实现 `Iterator<E>` 的匿名内部类。 类型参数 `E` 在这两个类的范围内。
8+
`4-1` 显示了一个将集合实现为单链表的类。 该类扩展了 `java.util.AbstractCollection`,所以它只需要定义方法的大小,添加和迭代器。 该类包含一个内部
9+
`Node`,列表节点和一个实现 `Iterator<E>` 的匿名内部类。 类型参数 `E` 在这两个类的范围内。
610

711
`4-1`。 类型参数在嵌套非静态类的范围内
812

@@ -44,9 +48,10 @@
4448
}
4549
```
4650

47-
相比之下,例 `4-2` 显示了一个类似的实现,但是这次嵌套的 `Node` 类是静态的,所以类型参数 `E` 不在这个类的范围内。 相反,嵌套类用它自己的类型参数 `T` 来声明。 在以前的版本引用节点的地方,新版本引用节点 `<E>`。前面例子中的匿名迭代器类也被嵌套的静态类所取代,它也有自己的类型参数。
51+
相比之下,例 `4-2` 显示了一个类似的实现,但是这次嵌套的 `Node` 类是静态的,所以类型参数 `E` 不在这个类的范围内。 相反,嵌套类用它自己的类型参数 `T`
52+
来声明。 在以前的版本引用节点的地方,新版本引用节点 `<E>`。前面例子中的匿名迭代器类也被嵌套的静态类所取代,它也有自己的类型参数。
4853

49-
如果节点类已被公开而不是私有,那么在第一个示例中将节点类称为 `LinkedCollection<E>.Node`而将第二个例子中的节点类称为 `LinkedCollection.Node<E>`
54+
如果节点类已被公开而不是私有,那么在第一个示例中将节点类称为 `LinkedCollection<E>.Node`而将第二个例子中的节点类称 `LinkedCollection.Node<E>`
5055

5156
`4-2`。 类型参数不在嵌套静态类的范围内
5257

@@ -90,6 +95,9 @@
9095
}
9196
```
9297

93-
在这里描述的两种替代方案中,第二种是优选的。 非静态的嵌套类通过包含对封装实例的引用来实现,因为它们通常可以访问该实例的组件。 静态嵌套类通常既简单又高效。
98+
在这里描述的两种替代方案中,第二种是优选的。 非静态的嵌套类通过包含对封装实例的引用来实现,因为它们通常可以访问该实例的组件。 静态嵌套类通常既简单又
99+
高效。
94100

101+
《《《 [下一节](04_How_Erasure_Works.md) <br/>
102+
《《《 [返回首页](../README.md)
95103

0 commit comments

Comments
 (0)