Skip to content

Commit 62dcb5e

Browse files
authored
fix 错别字,任何额; -> 任何 (#405)
* 忽路->忽略 * 修复跳转链接错误 * fix Class.getInterface() -> Class.getInterfaces() * 否者 -> 否则 * 编译期 -> 编译器 ,原文"the compiler will only allow you to say that the superclass reference is “some class that is a superclass of FancyToy” a" * ierator -> iterator * nextint -> nextInt * fix 这句翻译第一反应没太看懂,结合原文和下面的例子优化了一下翻译 * fix ojb -> obj * fix example code * add package&class name * fix 错别字
1 parent 2153062 commit 62dcb5e

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

docs/book/20-Generics.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2756,7 +2756,7 @@ false
27562756
*/
27572757
```
27582758

2759-
**Holder** 有一个接受 **T** 类型对象的 `set()` 方法,一个返回 T 对象的 `get()` 方法和一个接受 Object 对象的 `equals()` 方法。正如你所见,如果创建了一个 `Holder<Apple>`,就不能将其向上转型为 `Holder<Fruit>`,但是可以向上转型为 `Holder<? extends Fruit>`。如果调用 `get()`,只能返回一个 **Fruit**——这就是在给定“任何;额扩展自 **Fruit** 的对象”这一边界后,它所能知道的一切了。如果你知道更多的信息,就可以将其转型到某种具体的 **Fruit** 而不会导致任何警告,但是存在得到 **ClassCastException** 的风险。`set()` 方法不能工作在 **Apple****Fruit** 上,因为 `set()` 的参数也是"**? extends Fruit**",意味着它可以是任何事物,编译器无法验证“任何事物”的类型安全性。
2759+
**Holder** 有一个接受 **T** 类型对象的 `set()` 方法,一个返回 T 对象的 `get()` 方法和一个接受 Object 对象的 `equals()` 方法。正如你所见,如果创建了一个 `Holder<Apple>`,就不能将其向上转型为 `Holder<Fruit>`,但是可以向上转型为 `Holder<? extends Fruit>`。如果调用 `get()`,只能返回一个 **Fruit**——这就是在给定“任何扩展自 **Fruit** 的对象”这一边界后,它所能知道的一切了。如果你知道更多的信息,就可以将其转型到某种具体的 **Fruit** 而不会导致任何警告,但是存在得到 **ClassCastException** 的风险。`set()` 方法不能工作在 **Apple****Fruit** 上,因为 `set()` 的参数也是"**? extends Fruit**",意味着它可以是任何事物,编译器无法验证“任何事物”的类型安全性。
27602760

27612761
但是,`equals()` 方法可以正常工作,因为它接受的参数是 **Object** 而不是 **T** 类型。因此,编译器只关注传递进来和要返回的对象类型。它不会分析代码,以查看是否执行了任何实际的写入和读取操作。
27622762

0 commit comments

Comments
 (0)