Java泛型:获取泛型方法的返回类型的类

2024-03-18

背景

我曾经写过这个方法:

private <T> SortedSet<T> createSortedSet() {
  return new TreeSet<T>();
}

它应该这样称呼:

Set<String> set = createSortedSet();

这工作得很好(尽管我在研究当前问题时在此处的答案中看到这很容易出错)。

目前的情况

不管怎样,现在我正在编写以下代码(在扩展 javax.servlet.jsp.tagext.TagSupport 的类中):

private <T> T evaluate(String expression) {
  ExpressionEvaluator evaluator = pageContext.getExpressionEvaluator();
  return evaluator.evaluate(expression, T, null, pageContext.getVariableResolver());
}

目的是能够像这样调用它:

Integer width = evaluate(widthStr);

我的评估方法中的代码显然不起作用。第二个参数evaluator.evaluate()应该是一个 Class 对象。这导致我:

我的问题

如何获取泛型(返回)类型的类?我应该写什么来代替 T 作为要评估的第二个参数?

编辑:结论

尼古拉斯似乎是对的,这是不可能的,我需要将类作为参数传递给我的方法。好处是,由于他的解决方案使参数在泛型类型上参数化,我可以对该参数进行编译检查。


不幸的是,您肯定必须将方法更改为:

private <T> T evaluate(Class<T> clazz, String expression)

然后通过clazz作为你的第二个参数。没有你想象的那么短。

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

Java泛型:获取泛型方法的返回类型的类 的相关文章

  • 在Maven中生成Version.java文件

    我有一个使用 Ant 脚本构建的 Java 项目 我正在尝试将项目转换为 Maven 其中一项任务生成一个名为 Version java 的 Java 源文件 其中包含编译时间戳的静态字符串表示形式 如下所示 package com foo
  • 在Windows Server 2003下如何在本地系统帐户下运行jvisualvm.exe?

    我在带有 Java 1 6 u 20 的 Windows Server 2003 下将 GlassFish 3 0 1 作为 Windows 服务运行 总体上我很满意 我希望能够在这个 JVM 上使用 VisualVM 并使用无法在 Tom
  • 连接外部 Accumulo 实例和 java

    我正在尝试使用 Accumulo 连接到虚拟机 问题是 我无法将其连接到 Java 中 我可以看到 Apache 抛出的网页 但我无法让它与代码一起工作 我认为这是缺乏知识的问题而不是真正的问题 但我找不到这方面的文档 所有示例都使用 lo
  • java程序有多少种结束方式?

    我知道使用 System exit 0 可以结束一个java程序 例如 如果我有一个JFrame窗口 它会关闭并结束程序 但我想知道还有多少其他方法 可以关闭它并结束程序 包括发生错误时 程序会被关闭 JFrame也会被关闭吗 添加到其他答
  • 如何在 Android 应用程序中隐藏 Flutterwave API 密钥

    我正在构建一个 Android 应用程序 目前正在将 Flutterwave 集成到我的应用程序中以进行支付 建议我永远不要将 Flutterwave API 密钥放在我的应用程序上 那么我该如何隐藏这些键呢 我正在使用 Retrofit
  • 自定义列表字段点击事件

    我正在编写一个应用程序 其中我创建了用于显示列表视图的自定义列表字段 我的 CustomListField 包含连续的一个图像和文本 我正在通过单击列表字段行获取字段更改侦听器 但我也想将字段更改侦听器放在图像上 谁能告诉我我该怎么做 这是
  • Java中Gson、JsonElement、String比较

    好吧 我想知道这可能非常简单和愚蠢 但在与这种情况作斗争一段时间后 我不知道发生了什么 我正在使用 Gson 来处理一些 JSON 元素 在我的代码中的某个位置 我将 JsonObject 的 JsonElements 之一作为字符串获取
  • 如何使用 Java Apache POI 隐藏 Excel 工作表中以下未使用的行?

    我正在使用数据库中的数据填充模板 Excel 工作表 for Map
  • Java AES 256 加密

    我有下面的 java 代码来加密使用 64 个字符密钥的字符串 我的问题是这会是 AES 256 加密吗 String keyString C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE
  • Joshua Bloch 的构建器设计模式有何改进?

    早在 2007 年 我就读过一篇关于 Joshua Blochs 所采用的 构建器模式 的文章 以及如何修改它以改善构造函数和 setter 的过度使用 特别是当对象具有大量属性 其中大部分属性是可选的 时 本文对此设计模式进行了简要总结
  • 按降序排序映射java8 [重复]

    这个问题在这里已经有答案了 private static
  • 如何向页面添加 HTML 页眉和页脚?

    如何使用 itext 从 html 源添加标题到 pdf 目前 我们已经扩展了 PdfPageEventHelper 并重写了这些方法 工作正常 但当我到达 2 个以上页面时 它会抛出 RuntimeWorkerException Over
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定
  • 即使禁用安全性,OAuth 令牌 API 也无法在 Elastic Search 中工作

    我是 Elastic search 新手 使用 Elastic search 版本 7 7 1 我想通过以下方式生成 OAuth 令牌弹性搜索文档 https www elastic co guide en elasticsearch re
  • Java 中清除嵌套 Map 的好方法

    public class MyCache AbstractMap
  • Selenium 单击在 Internet Explorer 11 上不起作用

    我尝试在 Internet Explorer 上单击 selenium 但它不起作用 我努力了element click moveToElement element click build perform javascript没事了 事实上
  • Spring 作为 JNDI 提供者?

    我想使用 Spring 作为 JNDI 提供程序 这意味着我想在 Spring 上下文中配置一个 bean 可以通过 JNDI 访问该 bean 这看起来像这样
  • 设置 TreeSet 的大小

    有没有办法像数组一样对 Java 集合中的 TreeSet 进行大小限制 例如我们在数组中 anArray new int 10 数组具有固定长度 在创建数组时必须指定该长度 A TreeSet当您向其中添加元素时会自动增长 您无法设置其大
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐

  • 用Java读取纯文本文件

    Java 中读取和写入文件数据的方式似乎有不同 我想从文件中读取 ASCII 数据 有哪些可能的方式以及它们的区别 我最喜欢的读取小文件的方法是使用 BufferedReader 和 StringBuilder 它非常简单明了 虽然不是特别
  • 在常规反应中,如何在提交或“输入”键上关闭移动键盘?

    我试图找到这个答案 但我发现的所有其他问题都是 React Native handleEnter e if e key Enter REMOVE KEYBOARD 我的输入也是文本搜索 所以我希望键盘隐藏 以便用户可以看到出现的结果 e t
  • 在 JasperReport 中创建/传递 Java bean 数据源

    我在 JSF 应用程序中使用 JasperReport 和 ireport 来动态生成报告 这就是我想要实现的目标 我的结构 读为 HashMap ArrayList 包含需要传递到报告的数据 以便在报告中显示相同的数据 我的报告已经包含一
  • 用 C 编写安全标记联合

    假设你正在写一个C struct它代表一顿饭中的一道菜 课程领域之一struct属于类型 enum TP course STARTER MAINCOURSE DESSERT 然后 根据课程的类型 您有一个子类型 enum TP starte
  • React Native StatusBar:深色内容在 Android 上不起作用

    我正在尝试将标题的颜色和状态栏的图标更改为黑色 所以 根据react native状态栏文档 我设置了barStyle to dark content但没有任何改变
  • C99 中的引用传递

    我刚刚读过this http cartan cas suffolk edu oopdocbook opensource passreference html 在C 和C99 中 我们可以绕过 参考 它提供了相同的 性能相当于指针传递 所以我
  • 如何将 Quickbook 桌面应用程序与网站集成

    我是 Quick Book 的新人 现在我正在准备一个管理面板 在线网站 其中我必须与 Quick Book 桌面版本集成 我正在使用 NET C 平台制作这个网站 这里有一些帖子 但我仍然不清楚 简而言之 我的要求是 我们需要发送提供商名
  • javascript 函数在 jquery $(document).ready 块中不起作用

    我正在尝试打电话JavaScript函数从onclick扳机 HTML部分 div class my radio div
  • 如何使用 Sublime Text 运行节点应用程序

    如何使用 Sublime Text 运行节点应用程序 像这样 在sublime中打开app js文件 进入菜单 gt 工具 gt 构建 它 就运行了 就这么简单 Cmd Shift P 搜索 Nodejs Default File Sett
  • 反序列化 MongoDB BSON

    我尝试从查询 MongoDB 实例的 REST 服务获取响应并将响应解析为 Java 对象 Web 服务使用 MIME 类型的 html 返回响应 并用换行符分隔返回的每个记录 尽管我能够调整服务返回的内容 将 BSON 响应转换为 Jav
  • 自动更新数据库Mysql中的库存

    我需要了解数据库中的一件事 我有产品表及其总库存 如图所示 如果有人知道我该怎么做 请分享 谢谢 当提到关系数据库时 您所问的问题在技术上并不是技术意义上的 关系 这种关系就像有一个表引用另一个表的 键 例如将具有客户地址的表与具有客户订单
  • Azure - 启动命令 - 无法访问 jarfile app.jar

    我有一个 Java Spring Boot 应用程序 部署在 Azure Web 服务上 一切正常 我此刻真正想做的是 java jar Dspring profiles active test app jar 我想通过 Azure 云上的
  • 将 msbuild 任务作为 nuget 传送

    我需要你的帮助 我正在开发一个 msbuild 任务 该任务对 msbuild 执行某些操作 我希望我的用户能够下载并安装 nuget 包 安装包后 构建任务将成为构建过程的一部分 我知道如何发布 nuget 包 并且知道如何将自定义目标文
  • C++:受保护的类构造函数

    如果一个类总是要被继承 那么创建构造函数是否有意义protected class Base protected Base class Child protected Base public Child Base Thanks 仅当您不希望客
  • tsql 脚本来查找未被存储过程、视图、函数等使用的表?

    是否有一个 t sql 脚本来找出 sql server 中没有通过存储过程 视图 函数等使用的表 我有一个数据库 有 100 个表 如果不是更多的话 在我删除表之前 我想知道是否有一个脚本可以遍历数据库中的每个对象并告诉我是否有任何表正在
  • 共享互斥体的交替例程

    我有方法a在某个随机时间重复调用 从而触发方法b 它在一段随机时间后完全执行 并且在它自己的线程中 我想确保随后执行a等到b已完成 由当前执行触发a 换句话说 a and b均须交替执行 我尝试使用互斥体和条件变量来执行此操作 如下所示 d
  • pytorch - “conv1d”在哪里实现?

    我想看看 conv1d 模块是如何实现的https pytorch org docs stable modules torch nn modules conv html Conv1d https pytorch org docs stabl
  • DI 和存储库模式

    目前 我的代码与此类似 为了说明一点而缩短 DAL 存储库接口 public interface IRepository
  • VM Tracker 显示较大的脏大小

    我的应用程序的一部分是我同时执行操作的 它们包括初始化许多 CALayer 并将它们渲染为位图 不幸的是 在这些操作期间 在 iphone 4 上每个操作大约需要 2 秒才能完成 VM Tracker 指示的脏大小飙升至约 120MB 分配
  • Java泛型:获取泛型方法的返回类型的类

    背景 我曾经写过这个方法 private