Java 中的捕获转换是什么?有人能给我举个例子吗?

2024-04-08

我注意到 JLS 谈到5.1.10 捕捉转换 http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.10,但我不明白它们是什么。

谁能给我解释一下/举个例子吗?


捕获转换旨在制作通配符(在泛型中),? useful.

假设我们有以下类:

public interface Test<T> {
    public void shout(T whatever);
    public T repeatPreviousShout();

}

在我们的代码中的某个地方,

public static void instantTest(Test<?> test) {
    System.out.println(test.repeatPreviousShout());
}

Because test不是原始的Test自从repeatPreviousShout()在“事后看来”返回一个?,编译器知道有一个T用作类型参数Test. This T是为了一些未知的T所以编译器会删除未知类型(对于通配符,它​​替换为Object)。, 因此repeatPreviousShout()返回一个Object.

但如果我们有,

public static void instantTest2(Test<?> test) {
    test.shout(test.repeatPreviousShout());
}

编译器会给我们一个类似的错误Test<capture#xxx of ?> cannot be applied (where xxx是一个数字,例如337).

这是因为编译器尝试进行类型安全检查shout()但由于它收到了通配符,所以它不知道是什么T代表,因此它创建一个名为的占位符捕获.

From 这里(Java 理论与实践:疯狂使用泛型,第 1 部分) http://www.ibm.com/developerworks/java/library/j-jtp04298.html,它明确指出:

捕获转换允许 编译器生成占位符 输入捕获的通配符的名称, 这样类型推断就可以推断出 是那种类型。

希望这对您有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中的捕获转换是什么?有人能给我举个例子吗? 的相关文章

随机推荐

  • 具有多个计数子查询的 SELECT 查询

    我刚刚为报告编写了这个查询 但我最初编写它时没有在每个子查询上使用日期范围过滤器 但这没有用 所以我将它添加到每个子查询中 这很有效 但我真的不喜欢每次都重复它 是否有语法可以更简单地完成同样的事情 SELECT Count r id AS
  • 聚合、组合、关联、直接关联

    我正在复习面向对象编程方面的知识 在类之间的关系主题下 我遇到了一些对我来说有点模糊的关系 我知道依赖项 uses a 和继承 is a 但我对聚合 组合 关联和直接关联有点不熟悉 另外 其中哪一个是 has a 关系 有些可以与关联互换使
  • MongoDB - 使用全文搜索搜索单词和短语时的逻辑 OR

    我之前问过一个相关问题 根据发帖者的建议 创建了这个新问题作为后续问题 MongoDB 全文搜索 匹配单词和精确短语 https stackoverflow com questions 28368883 mongodb full text
  • 页面加载时,angularjs ng-cloak 不起作用

    我是 AngularJS 的新手 并试图解决在评估 ng if 条件之前显示某些 HTML 代码的问题 我正在使用 ng cloak 正如许多其他堆栈溢出 URL 中提到的那样 但它仍然对我不起作用 我正在尝试加载默认图像 如果 URL 上
  • 每个模块必须有唯一的路径

    我已经使用 GIT 从版本控制导入了一个项目 导入 同步等等之后 它给了我这个错误 错误 模块 LinkedCraftMobile linkedcraft android 指向文件系统中的同一目录 每个模块都必须有唯一的路径 我想要一个可以
  • 如何将数据表存储在缓存中以便重复使用?

    在我的应用程序中 我使用了通用处理程序来处理请求 我想要一种机制 如果第一次请求到达处理程序 它会向服务器发出请求 然后缓存整个数据表 因此对于即将到来的请求 如果下一个请求的产品代码存在于缓存的数据表中 则它不应该去再次获取数据的服务器
  • Net Core自定义用户属性

    我在 NET Core 项目中使用默认授权 我想检查用户是否是管理员 因此在 ApplicationUser cs 模型中我添加了以下内容 public class ApplicationUser IdentityUser public b
  • 实体框架中的 FirstOrDefault 调用已缓存,但数据库已更改

    我有一个奇怪的问题 我以前没有遇到过 我使用实体框架来检索我的记录 我有以下电话 var dbOrganisation repository DbOrganisation FirstOrDefault c gt c Id id 我预计不会缓
  • NfcAdapter.getDefaultAdapter(this) 返回 null 但 NFC 可以工作

    我的应用程序在后台和前台使用 NFC 读取 对于用户信息 我在活动中使用 CountDownTimer 120 1000 5 1000 和方法 onTick long l 每 5 秒检查一次 NFC 状态 有时 在 Android 4 2
  • Android 短按打开 ContextMenu + 传递项目单击的详细信息

    lv setOnItemClickListener new OnItemClickListener Override public void onItemClick AdapterView
  • 解决Java中的传递依赖冲突

    我正在尝试建立一个空投向导 http www dropwizard io 泽西岛 与 HBase 通信的 REST 端点 尽管这是我仅有的两个顶级依赖项 但这两个依赖项都加载了许多冲突的传递依赖项 这种冲突的一个简单例子是 Google 的
  • Receive-Job 返回意外的变量类型

    我正在尝试执行Invoke Sqlcmd命令 来自SQLServer模块 https learn microsoft com en us sql powershell sql server powershell view sql serve
  • 输入和按钮与 Bootstrap 在同一行

    我想将输入字段和按钮放在同一行中 我想为按钮设置固定大小 并且希望表单填充可用空间 我尝试创建自己的解决方案 但不幸的是该按钮低于输入字段 我怎样才能解决这个问题 CSS input bar display table width 100
  • 对象方法内的自引用

    刚刚开始在 Matlab OO 编程中进行速成课程 我想为一个对象编写一个 set 方法 该方法将设置值 然后通过在另一个对象的相关字段中设置自身来进行交互 classdef Person properties age sex priori
  • 拖放,防止尴尬的突出显示?

    我正在使用查询构建拖放方法 onmousedown 导致 onmousemove 拖动 然后 onmouseup 解除绑定 onmousemove 问题是 浏览器默认开始突出显示 onmousemove 它会在整个页面上飞来飞去并取消该事件
  • 具有数据属性的 HTML Option 元素。是否可能,如果可以,如何使用 jQuery 检索值?

    我只是想知道是否可以在 html 中包含带有数据属性的选项元素 如果可以的话如何检索该值 更具体 假设我有以下代码
  • 如何在 YAML 中使用 IF ELSE 和变量?

    我正在使用 Ansible Tower 的 YAML 文件 其中包含以下信息 name Package Deployment block name Update package package yum update cache True u
  • 当 DEBUG 为 False 时,Django 对 CSS 和图像等所有静态文件给出错误 500

    我尝试过用户已经发布的不同解决方案 但它们对我不起作用 设置 py项目数量 BASE DIR os path dirname os path dirname os path abspath file DEBUG False ALLOWED
  • 允许用户使用下拉菜单更改 CSS 设计元素?

    因此 由于我在为网站确定绝对主题时遇到问题 我想让用户从下拉菜单中选择一个主题 并且当单击某个选项时 它将更改背景图像 背景颜色和背景定位 例如 如果用户选择 Mario Bros 3 主题 他们会得到 background image u
  • Java 中的捕获转换是什么?有人能给我举个例子吗?

    我注意到 JLS 谈到5 1 10 捕捉转换 http java sun com docs books jls third edition html conversions html 5 1 10 但我不明白它们是什么 谁能给我解释一下 举