当前位置: 首页 > 知识库问答 >
问题:

难以理解可比的cast

鞠修雅
2023-03-14

我刚刚写了一个方法,它包含两个参数:1。扩展数字和2的任何类型的数组列表。相同类型的数字。此方法应返回一个数组列表,其中包含小于第二个参数的所有数字。

我的课叫Quiz3Final问题

我写的方法是这样的,

public static <T extends Number> ArrayList<T> lessThan(ArrayList<T> lst, T number) {
        ArrayList<T> arLst = new ArrayList<>();
        for (T obj: lst) {
            if (((Comparable<T>) obj).compareTo(number) < 0)
                arLst.add(obj);
        }
        return arLst;
}

它按预期工作,但如果Java预编译器没有告诉我将obj转换为类型Comparable,那么它就不会运行。我假设number参数在compareTo的可比版本中被强制转换。因此,当我向arLst添加一个obj时,对象应该被转换回T类型,对吗?另外,有没有更简单的方法来比较未知类型T的包装类对象?


共有1个答案

宋建柏
2023-03-14

您可以强制执行T也可以扩展Comparable

public static <T extends Number & Comparable<? super T>>
ArrayList<T> lessThan(ArrayList<T> lst, T number) {
    ...
}

然后你可以移除石膏。

1。参见通用

 类似资料:
  • 问题内容: 我很难理解的确切用法 AFAIK将生成地图文件,每当插入新设备时,它将在以后使用该地图文件,它将与这些地图文件进行匹配,并在匹配时加载模块。 但是我的误解是“模块是否仍在加载?” 我的意思是说我已经加载了。还是我错过了什么? 问题答案: 通常通过加载/插入设备的驱动程序(如果尚未加载)来支持热插拔。 (来自我的回答) 其工作方式如下: 代码中的每个驱动程序都使用以下方式公开其供应商/设

  • 我无法理解为什么ExceptionHandlerExceptionResolver会抛出异常。我已经编写了一个自定义@RestControlller建议ExceptionHandler来捕获Spring Boot应用程序抛出的异常。捕获后,我的ExceptionHandler返回来自抛出的异常的消息作为响应。但我仍然从ExceptionHandlerExceptionResolver收到一条日志消

  • 问题内容: 在React文档中给出以下示例代码: 我做了一些调查,最终得出的结果是: 进而得出。 但是我想知道的是,为什么我不能这样做: 我看不出点差运算符的含义是什么。 问题答案: 这有助于使您的代码更简洁-由于是对象,所以散布运算符会将传入的对象的 属性 应用到组件中。因此,该Component的属性a 的值为,而a 的值为。 它将与以下内容相同: 短一点

  • 这是一个关于一维峰值查找的问题(如果元素比数组中的邻居大,它就是一个峰值)。我正在看麻省理工学院的开放式课程讲座,他谈到了一个天真的解决方案:从索引0开始,一直到最后。 然后他说分而治之的解决方案要好得多。我不明白怎么会这样。这难道不是根据数组的内容做出假设吗?如果只是随机数,那又有什么区别呢? 讲师说他写了一个Python脚本,朴素的解决方案花了13秒,而log(N)解决方案只花了.001秒。我

  • 通常在使用JTable或JTree时,用户定义自己的单元渲染器。 从DefaultTableCellRenderer继承用户组件是很常见的,它实现了renderer方法getTableCellRendererComponent。事实证明,DefaultTableCellRenderer实际上继承自JLabel,因此在调用super(在render方法中)时返回自身(this),因此用户的渲染器也可

  • 给定一个板和一个起始位置(索引),函数的目标 就是计算到达终点位置之前的路径。 您可以假设: a。一个指令永远不会让你离开黑板 b。路径不会有任何循环(我们将在问题的下一部分中解决这个问题)。