Java 反射调用原始类型的构造函数

2024-04-17

我的测试框架中有一个方法,可以根据传入的参数创建类的实例:

public void test(Object... constructorArgs) throws Exception {
    Constructor<T> con;
    if (constructorArgs.length > 0) {
        Class<?>[] parameterTypes = new Class<?>[constructorArgs.length];
        for (int i = 0; i < constructorArgs.length; i++) {
            parameterTypes[i] = constructorArgs[i].getClass();  
        }
        con = clazz.getConstructor(parameterTypes);
    } else {
        con = clazz.getConstructor();
    }
}

问题是,如果构造函数具有基本类型,则这不起作用,如下所示:

public Range(String name, int lowerBound, int upperBound) { ... }

.test("a", 1, 3);

结果是:

java.lang.NoSuchMethodException: Range.<init>(java.lang.String, java.lang.Integer, java.lang.Integer)

原始整数会自动装箱到对象版本中,但如何取回它们以调用构造函数?


Use Integer.TYPE代替Integer.class.

根据Javadocs http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#TYPE,这是“代表原始类型的类实例int."

您还可以使用int.class。这是一个捷径Integer.TYPE。不仅是类,甚至对于原始类型,你都可以说type.class在爪哇。

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

Java 反射调用原始类型的构造函数 的相关文章

随机推荐

  • Java反应式框架的比较[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我看到许多框架 库声称它们可以帮助用 Java 构建响应式应用程序 例如 Akka Vert x RxJava Reactor QBit 等 他
  • 如何将 activemq-core.xsd url 与 jar 文件中找到的 activemq.xsd 关联?

    有人知道如何关联activemq core xsd网址与activemq xsd在 jar 文件 activemq core 5 2 0 jar 中找到 我在互联网上找到了一些解决方案 但没有成功 我收到此错误 Caused by org
  • 如何在 Rails 中保守 Secrets.yml 的秘密?

    我对 Rails 还很陌生 但我有一些 PHP 和其他语言编程经验 我真的很喜欢 Rails 并且正在为我的公司开发一个应用程序 但我仍然不完全理解 Secrets yml 文件如何与 git 和 heroku 配合使用 我知道秘密用于身份
  • Swiper 在 Jquery Mobile 中不起作用

    我在用idangero us 的 Swiper http www idangero us sliders swiper index php使用 Jquery 移动 我在这里使用滚动容器滑动器对于内容滑块 只是面临着将代码嵌入在一起的很多问题
  • rake db:rollback 为什么要回滚三步?

    通常当我这样做时 rake db rollback 它会回滚一次迁移 但现在 反复多次 已经回退了3步 怎么会有这种行为呢 我使用的是 Rails 3 2 13 您可以像这样指定步骤数 rake db rollback STEP 3 The
  • 如何更改Cloud Functions部署中使用的bundler版本?

    Context 从几天前开始 云功能的部署一直失败 Gemfile source https rubygems org ruby gt 2 7 0 git source github repo name https github com r
  • 如何在 Clojure 中处理大型二进制数据?

    如何在 Clojure 中处理大型二进制数据文件 我们假设数据 文件大约为 50MB 小到足以在内存中处理 但不是简单的实现 以下代码正确地从小文件中删除 M 但它会抛出OutOfMemoryError对于较大的文件 如 6MB defn
  • 需要在单个 Facebook 应用程序中添加多个域

    我正在尝试在我的 Facebook 应用程序中添加多个域 但尚未成功 我做了很多研究 发现 Facebook 不断改变其设置 添加多个域名最初是不可能的 但后来他们让它成为可能 然后又变得不可用 但没有更新如果现在可以完成的话 无论如何 我
  • 在 Windows 上安装 gokogiri 时找不到错误 libxml2

    我正在尝试安装gokogiri https github com moovweb gokogiri在 Windows 8 机器上按照 github 页面中的说明进行操作 安装 sudo apt get install libxml2 dev
  • ofstream::open 什么时候会失败?

    我正在尝试在 C 中尝试 捕获 抛出语句进行文件处理 并且我编写了一个虚拟代码来捕获所有错误 我的问题是为了检查我是否正确 我需要发生错误 现在我可以轻松检查infile fail 只需不在目录中创建所需名称的文件即可 但我怎样才能检查同样
  • Java编译器选择错误的重载[重复]

    这个问题在这里已经有答案了 Test public void test MyProperties props new MyProperties props setProperty value new Date StringUtils isN
  • 更新实体框架中的数据库架构

    我安装了 VS SP1 并使用了实体框架 我从现有数据库创建了一个架构并尝试了一些基本操作 除了数据库架构更新之外 大部分进展顺利 我以各种基本方式更改了数据库 添加了一个新表 删除了一个表 向现有表添加新列 从现有表中删除一列 更改了现有
  • linux 日期命令中的无效日期错误

    在脚本中我使用命令 CURRENT DATE tmp date d CURRENT DATE Y m d 它给出了错误date invalid date Y m d 可能是什么原因 我知道变量 CURRENT DATE 有其值 date d
  • 使用所需的优化标志重新构建 Tensorflow

    预先感谢您的考虑 我刚刚使用以下命令安装了tensorflow 在已安装Ubuntu 16 04和CUDA 8 0的新机器上 程序 http www nvidia com object gpu accelerated application
  • 溢出-y滚动即使没有溢出也总是显示

    我正在做 与内容分开滚动 JQuery Mobile 面板 我做了什么 https forum jquery com topic scroll inside panel 我应用这个 css 来实现我所做的事情 但问题是 Overflow y
  • Celery + SQLAlchemy:DatabaseError:(DatabaseError)SSL错误:解密失败或坏记录mac

    当在启用 SSL 的 postgresql 数据库上使用 celery 和多个工作线程时 有时会触发标题错误 我使用 Flask SQLAlchemy 配置 正如这里提到的 https github com celery celery is
  • 防止 PHP 中的目录遍历但允许路径

    我有一个基本路径 whatever foo and GET path 应该是相对的 但是 如何在不允许目录遍历的情况下完成此操作 读取目录 eg 无法正确过滤 好吧 一种选择是比较真实路径 basepath foo bar baz real
  • Azure 文件存储内容类型始终为 application/octet-stream

    目前 当我使用以下内容构建 URL 时 我遇到了 Azure 文件存储问题共享访问签名 SAS 令牌 https learn microsoft com en us azure storage common storage dotnet s
  • 如何使用Python在多进程中运行pycuda

    我有一个可以在单个进程中运行的 pycuda 代码 python的多进程可以支持在多个子进程中运行这段代码吗 如果我尝试 我会发现我犯了一个错误 我做错了吗 我尝试用python的进程实现一个简单的多进程 发现会出错 import pycu
  • Java 反射调用原始类型的构造函数

    我的测试框架中有一个方法 可以根据传入的参数创建类的实例 public void test Object constructorArgs throws Exception Constructor