泛型集合“无法实例化类型 ArrayList

2023-12-10

根据我读到的内容,我认为这是不可能的,但我想确定一下。 我有课OpDTO和其他几个*DTO extends OpDTO。 然后,我想要一种方法从这些子 DTO 的列表中仅提取某些元素,并在另一个列表中返回提取的元素:

public List<? extends OpDTO> getLastOp (List<? extends OpDTO> listDTOs) {
        List<? extends OpDTO> last = new ArrayList<? extends OpDTO>(); //compile error: Cannot instantiate the type ArrayList<? extends OpDTO>

        //processing

        return last;
    }

I want ult是与中的元素同类的元素列表listDTOs,并且仅使用 OpDTO 的方法,但它会产生编译错误:

无法实例化类型ArrayList<? extends OpDTO>

我也尝试做类似的事情:

public <T> List<T> getLastOp (List<T> listDTOs) {
        List<T> last = new ArrayList<T>();
        //processing

        return last;
    }

但是我无法强制 listDTOs 中的元素成为 OpDTO 的子类,并且无法实例化 T。 任何想法?

EDIT

我还想到将类型作为参数传递,然后我可以实例化它。这样可以吗?还是某种不好的做法?

private <T extends OpDTO> List<T> getLastOp (List<T> listDTOs, Class<? extends OpDTO> clazz) {
    List<T> ult = new ArrayList<T>();

    //processing
    OpDTO op = clazz.newInstance();
    //processing
    ult.add((T) op);
    op = listDTOs.get(i);

    return ult;
}

List<? extends OpDTO>是一个协变视图List<T>;这意味着任何List<T>类型可以转换为它,只要T火柴。
您无法创建此类类型的实例;您只能将其用作变量或参数类型来保存具体泛型类型的现有实例。

您需要创建一个通用方法约束 that T必须继承你的类:

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

泛型集合“无法实例化类型 ArrayList” 的相关文章

随机推荐

  • 生成PDF时如何添加外部CSS?

    目前我正在使用以下代码在 JSP 文件中生成 PDF response setContentType application force download response setHeader Content Disposition att
  • 如何使用nodejs获取mongodb的slave状态?

    我想使用节点js获取mongodb服务器的slavestatus 这是代码 var Db require mongodb Db Server require mongodb Server var db new Db admin new Se
  • Azure 中的 VM 映像和快照有什么区别?

    我已经阅读了 Azure Docs 中的多个文档 但是 没有得到它们在实现 目的等方面的确切区别 需要我可以实现这一点的场景 建议之一 先感谢您 如上所述https github com MicrosoftDocs azure docs i
  • wso2 中的 xml 到 json 转换

    当我尝试使用 wso2 中的 XSLT 中介器将 XML 转换为 Json 时 我收到 有效负载无法写为 JSON 错误 谁能帮我解决这个问题 提前致谢 Answer recommended by WSO2 Collective 为什么不使
  • 启用 Windows Aero 主题时如何在标题栏上绘制位图图标

    我正在开发一个 MFC 应用程序 DWM 库不可用 我想在标题栏上绘制一个用作按钮的位图 但是 在 Windows 7 中启用 Aero 主题时 位图不会显示 禁用 Aero 主题时没有问题 但我的应用程序仍然可以通过单击位图的位置进行反应
  • MS Access 2010 中的“查询太复杂”异常

    以下查询生成异常 我怎样才能简化它 UPDATE Word SET CorrectnessCount CorrectnessCount WHERE GroupNo GroupNo AND Name Adduce OR Name Assuag
  • Django - 在管理 list_display 函数中包含来自外键的数据

    我有两个模型和一个管理模型 class Person models Model firstname models CharField maxlength 50 surname models CharField maxlength 50 cl
  • 如何从 Phonegap 打开 Google Play 商店

    我想从我的phonegap应用程序打开google play商店来安装另一个通知应用程序 怎样才能做到这一点呢 我想 ios 通过 URL 导航方案很容易 但google并不支持所有的url导航方案 我查了一下只有 Twitter 可以使用
  • browser.cookies.getAll() 总是不返回任何内容 - Firefox 扩展

    我一直在尝试列出我的扩展中的所有浏览器 cookiebrowser cookies getAll 起初 我以为是权限问题 但我的权限似乎设置正确 这是我的代码 清单 json manifest version 2 name CookieEx
  • 如何更新/重新加载 DataGridView BindingSource?

    我是 C Windows 窗体和 datagridviews 的新手 我有一个选项卡式表单 选项卡 1 显示练习表的数据网格视图 选项卡 2 用于向表中添加新练习 练习表通过 test ExercisesDataSet vwexercise
  • 将解决方案文件夹添加到 Visual Studio 项目模板

    是否可以使用项目模板添加解决方案文件夹 如果它不是内置功能 是否可以为此创建自定义任务 这有点棘手 您无法使用简单的项目模板来做到这一点 项目模板只能在单个项目级别上运行 要实现更高级的逻辑 您需要实现向导扩展并在其中注册 vstempla
  • 标题大小写是一个包含一个或多个姓氏的字符串,同时处理带有撇号的姓名

    我想标准化用户提供的字符串 我希望姓名的第一个字母大写 如果他们输入了两个姓氏 则将名字和第二个名字大写 例如 如果有人输入 marriedname maidenname 它会将其转换为Marriedname Maidenname如果有两个
  • 关于根据年份生成年龄变量的思考

    多年来我一直试图创建一个虚拟变量 目前 我的数据有每个观察的出生日期和程序开始日期 我已经能够创建一个以天为单位测量个人年龄的变量 但我实际上正在寻找的是一个变量 age join date 它告诉我以下内容 Individual birt
  • Haskell:列表、数组、向量、序列

    我正在学习 Haskell 并阅读了几篇有关 Haskell 列表和 插入您的语言 数组的性能差异的文章 作为一名学习者 我显然只是使用列表 甚至没有考虑性能差异 我最近开始调查并发现 Haskell 中有许多可用的数据结构库 有人可以在不
  • URL 中 Hash(#) 的使用

    我想知道除了作为 URL 中的锚点之外 哈希还有其他用途吗 我在这里读到了它获取完整的 url 包括哈希后的查询字符串 客户端的状态信息是什么 请帮忙 哈希也可用于单页面应用程序 因此您可以使用哈希作为从一个页面导航到另一个页面的方式 而不
  • C# 使用 LINQ 选择行的最大 ID

    我有一个面包屑表 我想返回最近插入的行 在 SQL 中它将是MAX 函数 但不确定如何在 LINQ 中执行等效操作 基本上我想选择具有最高的行BreadCrumbID WHERE ProjectID 49 这是我现在的查询 它将选择所有行W
  • Java 中的并行计算 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何在 Java 中使用并行 或者我使用普通线程 阅读Java并发教程 创建多个线程来为您完成工作
  • Java中根据天数获取日期

    简单的问题 但令人惊讶的是谷歌对此几乎没有什么了解 我有number of days从今年1月1日开始 我怎样才能将其转换为date在Java中 你可以简单地使用SimpleDateFormat转换String to Date 图案D可以用
  • 如何将 int 转换为 NSString?

    我想转换一个int to a NSString在目标 C 中 我怎样才能做到这一点 基元可以转换为对象 表达 所以shortest方法就是转变int to NSNumber并选取字符串表示形式stringValue method NSStr
  • 泛型集合“无法实例化类型 ArrayList

    根据我读到的内容 我认为这是不可能的 但我想确定一下 我有课OpDTO和其他几个 DTO extends OpDTO 然后 我想要一种方法从这些子 DTO 的列表中仅提取某些元素 并在另一个列表中返回提取的元素 public List