update 33. 优先考虑类型安全的异构容器

This commit is contained in:
sjsdfg 2019-04-05 22:51:52 +08:00
parent ab38697e35
commit 577142bec5

View File

@ -6,7 +6,7 @@
  作为这种方法的一个简单示例,请考虑一个 `Favorites` 类,它允许其客户端保存和检索任意多种类型的 favorite 实例。 该类型的 `Class` 对象将扮演参数化键的一部分。其原因是这 `Class` 类是泛型的。 类的类型从字面上来说不是简单的 `Class`,而是 `Class<T>`。 例如,`String.class` 的类型为 `Class<String>``Integer.class` 的类型为 `Class<Integer>`。 当在方法中传递字面类传递编译时和运行时类型信息时它被称为类型令牌type token[Bracha04]。
  `Favorites` 类的 `API` 很简单。 它看起来就像一个简单 `Map` 类,除了该键是参数化的以外。 客户端在设置和获取 favorites 实例时呈现一个 `Class` 对象。 这里是 API
  `Favorites` 类的 `API` 很简单。 它看起来就像一个简单 `Map` 类,除了该键是参数化的以外。 客户端在设置和获取 favorites 实例时呈现一个 `Class` 对象。 如下是 API
```java
// Typesafe heterogeneous container pattern - API
@ -34,7 +34,7 @@ public static void main(String[] args) {
}
```
  正如你所期望的,这个程序打印 `Java cafebabe Favorites`。 请注意,顺便说一下,`Java` 的 `printf` 方法与 C 语言的不同之处在于,应该使用cn而在 C 中使用\n。%n 生成适用的特定于平台的行分隔符,该分隔符在很多但不是所有平台上都是\n。
  正如你所期望的,这个程序打印 `Java cafebabe Favorites`。 请注意,顺便说一下,`Java` 的 `printf` 方法与 C 语言的不同之处在于,你应该在 C 中使用 \n 的地方改用 %n。%n 用于生成适用于特定平台的行分隔符,在大多数平台上面的值为 \n但并不是所有平台的分隔符都为 \n。
  `Favorites` 实例是类型安全的:当你请求一个字符串时它永远不会返回一个整数。 它也是异构的:与普通 Map 不同,所有的键都是不同的类型。 因此,我们将 `Favorites` 称为类型安全异构容器typesafe heterogeneous container