是否可以使用Java Reflection创建内部类的实例?

2023-11-26

代码示例:

public class Foo
{
    public class Bar
    {
         public void printMesg(String body)
         {
             System.out.println(body);
         }
    }
    public static void main(String[] args)
    {
         // Creating new instance of 'Bar' using Class.forname - how?
    }        
}

是否可以创建 Bar 类的新实例并给出其名称?我尝试使用:

Class c = Class.forName("Foo$Bar")

它找到了该类,但是当我使用 c.newInstance() 时,它会抛出 InstantiationException。


你需要跳过一些障碍才能做到这一点。首先,您需要使用类.getConstructor()找到Constructor您要调用的对象:

返回一个构造函数对象 反映特定公众 所表示的类的构造函数 通过这个 Class 对象。这 parameterTypes 参数是一个数组 标识的类对象 构造函数的形参类型, 按宣布的顺序。如果这个类 对象代表一个内部类 在非静态上下文中声明, 形式参数类型包括 显式封闭实例作为 第一个参数。

然后你使用构造函数.newInstance():

如果构造函数声明类 是非静态的内部类 上下文,第一个参数 构造函数需要是封闭的 实例

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

是否可以使用Java Reflection创建内部类的实例? 的相关文章

随机推荐

  • TFS:查找更改集之间受影响的文件

    我们正在使用 Team Foundation Server 2012 我们有一个人于 2016 年 8 月 9 日在变更集 13646 中提交了 97 个文件 不包括设计器和资源文件 十 10 天后 即 2016 年 8 月 18 日 他将
  • 如何在不赋值​​的情况下声明静态可变变量?

    我尝试了以下方法 struct mbuf cacheline mut u64 great amount of rows follows below static mut arr mbuf 32 Q1 my main aim somethin
  • 如何在单个结果集中列出 SQL Server 中所有数据库中的所有表?

    我正在寻找 T SQL 代码来列出 SQL Server 中所有数据库中的所有表 至少在 SS2005 和 SS2008 中 如果也适用于 SS2000 就好了 然而 问题是我想要一个单一结果集 这排除了其他方面的优秀答案皮纳尔 戴夫 sp
  • Vuex 和 Websocket

    目前我正在使用 VueJS 2 而且我对它还很陌生 现在我得到了其他一些人的帮助 但我仍然陷入困境 这是我想要实现的目标 示例 与我想要的紧密相关 我有一个监听 WebSocket 的 NodeJS 应用程序 应用程序通过 WebSocke
  • 从前端 javascript 打印?

    是否可以在浏览器中使用带有javascript的打印机打印一些东西 我想打印收据号 所以如果可能的话 最快的打印机是什么 这样当用户单击按钮时它就会打印出来 例如 小纸上写着 1234 Thanks 您无法直接从 Javascript 访问
  • mupdf 库的 Proguard 问题

    在我尝试构建发行版本之前 我的应用程序运行良好 我收到以下错误消息 java lang NoSuchFieldError 没有名称 globals 签名 J 的字段 在 Lcom artifex mupdfdemo MuPDFCore 类中
  • SendKeys 到非活动应用程序

    我试图弄清楚如何使我的 C 应用程序将密钥发送到另一个应用程序窗口 而不需要关注它 我有一个单词列表和 3 个记事本文件 想象一下 我按顺序打开了所有 3 个记事本窗口 我的程序将获取列表框中的第一个单词并将其写入第一个记事本窗口中 第二个
  • AngularJS 查询生成器类似于 http://redquerybuilder.appspot.com/ [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在尝试仅使用 AngularJS 创建一个完整的查询生成器 我见过http redquerybuilder appspot com 这很棒 但不适用于 AngularJS 我
  • Scala 中缀类型的现实示例

    我发现了一种有趣的语法东西 它被称为Infix type Example class M T U new Int M String 现在我正在从一些流行的框架或库中寻找这种类型的示例 我在哪里可以找到它们 有什么建议么 无形图书馆 有一堆
  • 即使在 unsetenv("LD_PRELOAD") 之后,LD_PRELOAD 也会影响新的子进程

    我的代码如下 preload c 内容如下 include
  • 如何向 DropDownList 添加初始“选择”值

    如果我使用 DropDownList
  • datepicker选择星期几android

    我的应用程序中有日期选择器 它运行良好 但我需要选择星期几而不是日期 即 如果我选择日期 23 我需要获取像 星期五 这样的日期而不是数字 我用了OnDateSetListener对于点击事件 private DatePickerDialo
  • 显示 sweave 的错误

    我正在使用 Sweave 编写一些 R 笔记 并希望显示常见错误 例如 lt
  • WordPress 分页简码

    向 WordPress 大脑提出一个简单的问题 我有一个短代码 当前可以导入特定帖子类型的所有帖子 但是 我在向 wp query 添加分页时遇到问题 为了解释此代码的功能 我将 feed type attractions limit 2
  • 如何在 bazel/tensorflow 构建期间添加外部头文件

    我正在尝试添加外部头文件 如 OpenCL 头文件 以进行一些张量流实验 我尝试将其添加到 tensorflow core BUILD 文件下的 BUILD 文件中 This includes implementations of all
  • 使用 ContentCachingRequestWrapper 导致参数映射为空

    我已经实现了一个过滤器 在其中我想首先读取请求的内容进行一些检查 然后我想继续 但问题是 在过滤器链的以下过滤器中getParameters 方法来自class Request org eclipse jetty server Reques
  • 如何使用合并内存访问

    我有 N 个线程在设备上同时执行 它们需要全局内存中的 M N 个浮点数 访问合并的全局内存的正确方法是什么 在这件事上 共享内存能提供什么帮助呢 通常 当相邻线程访问内存中的相邻单元时 可以实现良好的合并访问 因此 如果tid保存线程的索
  • RecyclerView可扩展cardView

    我用 RecyclerView 制作了一个小项目 里面有 CardView 项目 我创建了可扩展卡 通过按卡内的小按钮进行扩展 每张卡片始终包含可见部分 id top layout 和可扩展部分 id expandable part lay
  • 如何使用 Java 创建非常大的布尔数组?

    当我尝试使用 Java 创建一个非常大的布尔数组时 例如 boolean isPrime1 new boolean 600851475144 我可能会遇到精度损失错误 是不是太大了 可存储600个billion位 您需要 75 的绝对最小地
  • 是否可以使用Java Reflection创建内部类的实例?

    代码示例 public class Foo public class Bar public void printMesg String body System out println body public static void main