Skip to content

Commit 5bb5d7b

Browse files
authored
Update 03_A_Fruity_Example.md
1 parent ca41b8b commit 5bb5d7b

File tree

1 file changed

+18
-32
lines changed

1 file changed

+18
-32
lines changed

ch03/03_A_Fruity_Example.md

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,35 @@
1-
# 水果相关示例
1+
《《《 [返回首页](../README.md) <br/>
2+
《《《 [上一节](02_Maximum_of_a_Collection.md)
23

3-
`Comparable <T>` 接口可以很好地控制可以和不可以比较的内容。确保我们有一个带有 `Apple``Orange` 子类的 `Fruit` 类。 根据我们的设置,我们可能会禁止苹果与橘子进行比较,或者我们可能允许进行比较。
4+
### 水果相关示例
45

5-
例3-2禁止苹果与橘子的比较。 以下是它声明的三个类:
6+
`Comparable <T>` 接口可以很好地控制可以和不可以比较的内容。确保我们有一个带有 `Apple``Orange` 子类的 `Fruit` 类。 根据我们的设置,我们可能会
7+
禁止苹果与橘子进行比较,或者我们可能允许进行比较。
8+
9+
`3-2` 禁止苹果与橘子的比较。 以下是它声明的三个类:
610

711
```java
812
class Fruit {...}
913
class Apple extends Fruit implements Comparable<Apple> {...}
1014
class Orange extends Fruit implements Comparable<Orange> {...}
1115
```
1216

13-
每个水果都有一个名称和一个大小,如果两个水果具有相同的名称和大小,则两个水果相等。 遵循良好的做法,我们还定义了一个 `hashCode` 方法,以确保相同的对象具有相同的哈希码。 通过比较苹果的大小来比较苹果,橙子也是如此。 自 `Apple` 实现了接口 `Comparable<Apple>` 很明显,你可以比较苹果和苹果,但不能与橙子比较。 测试代码建立三个列表,其中一个是苹果,一个是橘子,另一个是混合水果。 我们可能会发现前两个列表中的最大值,但试图在编译时查找混合列表的最大值表示错误。
17+
每个水果都有一个名称和一个大小,如果两个水果具有相同的名称和大小,则两个水果相等。 遵循良好的做法,我们还定义了一个 `hashCode` 方法,以确保相同的对
18+
象具有相同的哈希码。 通过比较苹果的大小来比较苹果,橙子也是如此。 自 `Apple` 实现了接口 `Comparable<Apple>` 很明显,你可以比较苹果和苹果,但不能与
19+
橙子比较。 测试代码建立三个列表,其中一个是苹果,一个是橘子,另一个是混合水果。 我们可能会发现前两个列表中的最大值,但试图在编译时查找混合列表的最大
20+
值表示错误。
1421

15-
例3-1允许比较苹果和橙子。 将这三个类声明与以前给出的类声明进行比较(突出显示示例示例3-2和示例3-1之间的所有区别):
22+
`3-1` 允许比较苹果和橙子。 将这三个类声明与以前给出的类声明进行比较(突出显示示例示例 `3-2` 和示例 `3-1` 之间的所有区别):
1623

1724
```java
1825
class Fruit implements Comparable<Fruit> {...}
1926
class Apple extends Fruit {...}
2027
class Orange extends Fruit {...}
2128
```
2229

23-
和以前一样,每个水果都有一个名字和一个大小,如果两个水果有相同的名字和相同的大小,它们是相等的。 现在通过忽略他们的名字和比较他们的大小来比较任何两种水果。 由于 `Fruit` 实现了 `Comparable <Fruit>`,所以可以比较任何两个水果。 现在测试代码可以找到所有三个列表中的最大值,包括将苹果与橙子混合在一起的列表。
30+
和以前一样,每个水果都有一个名字和一个大小,如果两个水果有相同的名字和相同的大小,它们是相等的。 现在通过忽略他们的名字和比较他们的大小来比较任何两种
31+
水果。 由于 `Fruit` 实现了 `Comparable <Fruit>`,所以可以比较任何两个水果。 现在测试代码可以找到所有三个列表中的最大值,包括将苹果与橙子混合在一起
32+
的列表。
2433

2534
回想一下,在上一节的结尾,我们继承了 `compareTo` 的类型签名以使用 `super`
2635

@@ -42,30 +51,7 @@
4251

4352
如果没有 `super` 通配符,查找 `List <Orange>` 的最大值将是非法的,即使找到 `List <Fruit>` 的最大值是允许的。
4453

45-
还要注意这里使用的自然顺序与等号不一致(参见第3.1节)。 两个不同名字但大小相同的水果比较相同,但它们并不相同。
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-
54+
还要注意这里使用的自然顺序与等号不一致(参见第 `3.1` 节)。 两个不同名字但大小相同的水果比较相同,但它们并不相同。
7155

56+
《《《 [下一节](04_Comparator.md) <br/>
57+
《《《 [返回首页](../README.md)

0 commit comments

Comments
 (0)