我为什么要关心 Java 没有具体化泛型?

2023-11-21

这是我最近在一次采访中提出的一个问题,因为候选人希望看到 Java 语言中添加一些内容。这通常被认为是 Java 所没有的痛苦具体化泛型但是,当我催促时,这位候选人实际上无法告诉我,如果他们在那里,他可以实现哪些目标。

显然,因为 Java 中允许原始类型(以及不安全检查),所以有可能颠覆泛型并最终得到一个List<Integer>(例如)实际上包含Strings。如果类型信息具体化,这显然是不可能的;但肯定不止这些!

人们可以发布一些事情的例子吗他们真的很想做,具体化仿制药可用吗?我的意思是,显然你可以得到 a 的类型List在运行时 - 但你会用它做什么呢?

public <T> void foo(List<T> l) {
   if (l.getGenericType() == Integer.class) {
       //yeah baby! err, what now?

EDIT:对此进行快速更新,因为答案似乎主要关注是否需要传递Class作为参数(例如EnumSet.noneOf(TimeUnit.class))。我正在寻找更多类似的东西这是不可能的。例如:

List<?> l1 = api.gimmeAList();
List<?> l2 = api.gimmeAnotherList();

if (l1.getGenericType().isAssignableFrom(l2.getGenericType())) {
    l1.addAll(l2); //why on earth would I be doing this anyway?

最让我困扰的是无法利用跨多个泛型类型的多重调度。以下是不可能的,但在很多情况下这将是最佳解决方案:

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

我为什么要关心 Java 没有具体化泛型? 的相关文章

随机推荐

  • Java中的方法在某个位置创建文件,必要时创建目录?

    我正在尝试使用 java io 编写一个文件 我试图在该位置创建它 some path to somewhere then my file 创建文件时 路径上的任何目录可能存在 也可能不存在 我希望在需要时透明地创建目录 而不是因为没有这样
  • 多个微服务的 swagger 整合

    我有多个微服务 已经为其实现了 swagger 我想将所有 api 置于单个 swagger UI 下 我已按照以下链接执行此操作 但在STS的maven方法中尝试过 Swagger 合并 Github 示例 这是我在项目中的不同文件 Sp
  • jQuery.trigger() 函数后的回调

    我这里有一个小问题 我必须触发一个包含 post 的事件来加载表单并将其分配给 DOM 完成此操作后 我编辑了表单的字段 I tried when function type rank field trigger change calls
  • 以编程方式记录到 Sharepoint ULS

    我想在 Sharepoint Web 部件中记录内容 但我希望将其记录到 ULS 中 我发现的大多数示例都会登录到事件日志或其他文件 但我还没有真正找到用于登录 ULS 的示例 令人烦恼的是 Microsoft SharePoint Dia
  • 有没有办法获取类的变量和函数列表

    有没有办法获取类的变量和函数列表 例如 如果我的课程如下 class Person var age Int var name String func isOlder from person Person gt Bool func hasSa
  • 将 Redux 添加到现有的 React 应用程序

    我一直在开发一个 React 应用程序 并且已经到了需要 Redux 来处理它的某些方面的地步 在阅读了一堆教程之后 我相当困惑于如何使我的 更智能 的组件变得 更笨 并将函数移动到我的动作和减速器中 例如 该应用程序的一方面更像是待办事项
  • WPF 在同一个 ListCollectionView 上使用多个过滤器

    我使用 MVVM 设计模式 将 ListView 绑定到 ViewModel 上的 ListCollectionView 我还有几个用于过滤 ListView 的组合框 当用户从组合框中选择一个项目时 ListView 会过滤所选项目 每当
  • 如何从 pandas 数据帧在 MySQL 数据库中创建新表

    我最近从使用 SQLite 来满足大部分数据存储和管理需求 过渡到使用 MySQL 我想我终于安装了正确的库来使用 Python 3 6 但现在我在从 MySQL 数据库中的数据帧创建新表时遇到了问题 这是我导入的库 import pand
  • Primefaces 文件下载的非英文文件名已损坏

    我正在使用 Primefaces 3 2 我在使用 primefaces fileDownload 时遇到问题 我可以上传文件并将其非英文名称保留在服务器上 在我的情况下 这是俄语 但是 当我使用 p fileDownload 下载上传的文
  • 在 Azure WorkerRole 上运行 PowerShell 命令时出错

    我正在尝试在 Windows Azure 角色上运行启动任务 cmd 脚本 这是命令文件脚本的两行 powershell command set executionpolicy Unrestricted powershell command
  • 使用sklearn在PCA中恢复explained_variance_ratio_的特征名称

    我正在尝试从使用 scikit learn 完成的 PCA 中恢复 which特征被选择为relevant IRIS 数据集的经典示例 import pandas as pd import pylab as pl from sklearn
  • Pyserial 缓冲区填充速度快于我的读取速度

    我正在通过串口以 921600 的波特率从微控制器读取数据 我正在读取大量 ASCII csv 数据 由于数据输入速度如此之快 缓冲区已被填满 所有其余数据都会在之前丢失我能读懂 我知道我可以手动编辑serialwin32的pyserial
  • android ExpandableListView如何设置组项目之间的空间

    我有可扩展列表视图 我想在组项之间添加填充 或边距 我使用margin botton在组项目上 它有效 但现在它也适用于组项目及其子项目 我想在组项目之间保留空格 而不是在组项目及其子项目之间保留空格 我的工作方式如下 主要XML
  • 如何中止 ASP.NET MVC 中的操作

    我想停止由jQuery ajax服务器端的方法 我可以使用停止 Ajax 请求 ajax abort 方法在客户端 但不在服务器端 Updated 我使用异步操作而不是同步操作 但我没有得到我想要的 如您所知 服务器无法同时处理多个请求 这
  • 嵌入图像不显示

    这是我在便携式项目中的页面
  • 如何获取 NLTK 中同义词集的词网语义频率?

    根据文档 我可以在 nltk 中加载带有语义标记的语料库 如下所示 gt gt gt from nltk corpus import wordnet ic gt gt gt brown ic wordnet ic ic ic brown d
  • 错误 1878 (HY000):临时文件写入失败

    我正在执行一个查询 修改表message添加列syncidint 10 非空默认 0 MySQL 返回错误 ERROR 1878 HY000 Temporary file write failure 消息表信息 引擎类型 InnoDB 行数
  • Excel 2007 - 根据文本生成唯一ID?

    我有一张工作表 其中 B 列中有一个名称列表 A 中有一个 ID 列 我想知道是否有某种公式可以获取该行 B 列中的值并根据文本生成某种 ID 每个名字也是独一无二的 不会以任何方式重复 如果我真的不必使用 VBA 那就最好了 但如果我必须
  • 集合、多重集、映射和多重映射如何在内部工作

    多组如何运作 如果集合不能将值映射到键 那么它是否只保存键 另外 关联容器如何工作 我的意思是向量和双端队列在内存中是按顺序定位的 这意味着如果它们很大 则删除 删除 除了开始 双端队列 和结束 向量 双端队列 会很慢 列表是一组不按顺序位
  • 我为什么要关心 Java 没有具体化泛型?

    这是我最近在一次采访中提出的一个问题 因为候选人希望看到 Java 语言中添加一些内容 这通常被认为是 Java 所没有的痛苦具体化泛型但是 当我催促时 这位候选人实际上无法告诉我 如果他们在那里 他可以实现哪些目标 显然 因为 Java