上界泛型 VS 超类作为方法参数?

2023-11-25

据我所知,使用上限泛型和使用超类作为方法参数都接受相同的可能参数。哪个是首选,两者之间有什么区别(如果有)?

上限泛型作为参数:

public <T extends Foo> void doSomething(T foo) {}

超类作为参数:

public void doSomething(Foo foo) {}

这是一个上限类型参数。下限是使用创建的super,您实际上无法对类型参数执行此操作。不能有下界类型参数.

例如,如果您想通过List<T>。因此,对于以下两种方法:

public <T extends Foo> void doSomething(List<T> foos) {}
public void doSomething(List<Foo> foo) {}

对于给定的类:

class Bar extends Foo { }

方法调用如下:

List<Bar> list = new ArrayList<Bar>();
doSomething(list);

对第一种方法有效,但对第二种方法无效。第二种方法失败,因为List<Foo>不是一个超类型List<Bar>, 虽然Foo是超类型的Bar。但是,第一个方法通过了,因为有类型参数T将被推断为Bar.

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

上界泛型 VS 超类作为方法参数? 的相关文章

  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • Gem/Bundler 加载错误:无法激活...已激活

    我运行了捆绑更新来更新我的宝石 现在 当我尝试启动本地开发服务器时 我得到了这个信息 有人知道如何修复吗 hostname myapp username rails s Users username rvm rubies ruby 1 9
  • decltype(auto) 从 lambda 捕获推导出返回类型

    我的编译器对一个小的 C 14 代码片段有不同意见 include
  • 如何正确取消订阅socket.io房间并销毁它?

    我的每个套接字都有一个内部循环 if chat room list hash room has expired socket leave hash delete chat user list socket store data id roo
  • 按函数应用于 lm()

    我是 R 新手 我刚刚学习apply功能及其工作原理 我只是想从a中提取系数lm适合几年内按产品颜色和品牌划分的变量 x 我知道我可以创建一个 for 循环并按模型年份对数据进行子集化并进行拟合 但我认为是时候开始使用更多内置函数了 所以我
  • FFT系数问题

    我是一名软件工程师 第一次从事 DSP 工作 I m successfully using an FFT library that produces frequency spectrums I also understand how the
  • 将带有纹理的简单模型从 Blender 导出到 Three.js

    Note 我想避免修改 javascript 代码中的模型并在 Blender 中完成所有模型设计 Note 2 虽然这个问题很长 但它实际上是一个基本问题 标题说明了一切 以下是该问题的 演练 我正在尝试将 Blender 模型导出到Th
  • MonoTouch.Dialog:响应 RadioGroup 选择

    我有一个由 MonoTouch Dialog 创建的对话框 广播组中有一个医生列表 Section secDr new Section Dr Details new RootElement Name rdoDrNames secDrName
  • TableModelListener 和多列验证

    这是我第一次在这里发帖 如果有什么错误还请见谅 我正在开发一个 JTable 其中列数据必须验证一些参数 例如 第 3 列值 gt 30第 4 列值 gt 10第 5 列值 gt 4 此外 前 2 列会 自动 填充 在其余列中放入 0 如果
  • 选择组合框中的项目时执行操作[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有一个包含 item1 和 item2 的 jcombobox 我也有一个 jtextfield 当我在 jcombobox 上选择 item1 时 我希望 30 出现在我的 jt
  • Keras VGG16 微调

    上有VGG16微调的例子喀拉斯博客 但我无法重现它 更准确地说 以下代码用于在没有顶层的情况下初始化 VGG16 并冻结除最顶层之外的所有块 WEIGHTS PATH NO TOP https github com fchollet dee
  • Ruby on Rails:自定义设备注册控制器,请求创建操作

    我有一个自定义注册控制器 但我不想覆盖设计中的创建操作 当我尝试注册用户时 出现以下错误 Unknown action The action create could not be found for Devise Registration
  • 无法在 Eclipse 中导入 java.awt.geom

    我刚刚开始开发一个新的 Eclipse Android 项目 并且想要使用 java awt geom 包中的类 我安装了 OpenJVM 1 6 和 sun 1 6 jdk 都来自 debian 的存储库 当我尝试导入包时 它说导入无法解
  • 如何强制刷新/重新绘制 JScrollPane?

    我在程序开始时根据数据库中的一些内容以编程方式将许多组件 JPanel JLabels 等 添加到 JScrollPane 中 似乎这个过程对于 GUI 来说太快了 因此 JScrollPane 并不总是正确更新 即即使内部 JPanel
  • 存储整数范围、查询范围和修改范围的数据结构

    我们需要维护 mobileNumber 及其在内存中的位置 挑战在于我们拥有超过 500 万用户 存储每个用户的位置就像 500 万条记录的哈希图 为了解决这个问题 我们必须在范围上工作 我们得到了一系列电话号码 例如 范围1开始 9899
  • 用批处理文件替换文本文件中的字符

    有没有办法用批处理文件替换文本文件中的某些字符 我没有找到任何命令来执行此操作 简单的回答是 不 不能使用基本的 Windows 实用程序 但正如其他答案所建议的那样 有很多 UNIX 端口可以满足您的需求 看一眼gnuwin32 软件包
  • c# 中 double[*,*] 与 double[][] 之间的区别

    我用了 double marks new double 26 5 int function object verify marks public void verifymarks double marks 我得到的错误是无法从 double
  • 自定义数据注释 ASP.NET MVC C#

    我有以下关于 C 的 MVC2 的问题 这是我的模型 public class Pmjob Tooltext Hier soll der Name eingegeben werden DisplayName Type public int
  • 安装 python 包失败并显示“无法执行 gcc:没有这样的文件或目录”

    尝试安装 mysql python 出现以下错误 mysql和python已经安装好了 任何帮助将不胜感激 root uu include easy install mysql python Searching for mysql pyth
  • Excel数组countif公式

    我想使用 COUNTIF 函数来计算 2 0 0 5 中有多少项大于 2 在 Countif 函数中 第一个参数是范围 第二个参数是条件 我已经尝试过下面的公式 甚至尝试在最后使用 Ctrl Shift Enter 进行评估 但似乎不起作用
  • 上界泛型 VS 超类作为方法参数?

    据我所知 使用上限泛型和使用超类作为方法参数都接受相同的可能参数 哪个是首选 两者之间有什么区别 如果有 上限泛型作为参数 public