首页 > Java > java教程 > 何时以及为何在 Java 泛型中使用 ``?

何时以及为何在 Java 泛型中使用 ``?

Barbara Streisand
发布: 2024-11-27 16:00:14
原创
982 人浏览过

When and Why Use `` in Java Generics?

Java 中的泛型:何时以及如何使用

在 Java 中,泛型允许开发人员编写对不同数据类型进行操作的代码,而无需使用创建同一代码的多个版本。使用泛型时,了解使用 之间的区别至关重要。

何时使用

语法 指示泛型类型参数可以是指定类型的任何子类型。例如,在下面的代码中:

Map<String, Class<? extends Serializable>> expected = null;
登录后复制

预期的映射可以保存表示任何实现 Serialized 的类或其任何子类的 Class 对象。

为什么 导致编译错误?

在提供的示例中:

Map<String, Class<java.util.Date>> result = null;
assertThat(result, is(expected));
登录后复制

结果映射指定它只能保存 Date 类对象。检查结果类型时,assertThat 方法需要一个适合结果类型的 Matcher。然而,预期映射的类型(Matcher)与预期类型(Map

切换到 的缺点

将 assertThat 方法签名更改为 可能会产生意想不到的后果,包括:

  • 破坏与使用 Matcher 的现有代码的兼容性
  • 可能允许发生无效匹配。

泛化assertThat方法

JUnit中assertThat方法的泛化旨在确保兼容的Matcher提供。但是,由于 Matcher 类不需要泛型类型,因此泛型可能显得多余。但是,它通过确保匹配器可以处理正在测试的结果的实际类型来提供类型安全。

以上是何时以及为何在 Java 泛型中使用 ``?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板