Java:使用类型参数访问私有构造函数

2024-04-29

这是后续这个关于java私有构造函数的问题 https://stackoverflow.com/questions/2599440/accessing-the-private-constructor.

假设我有以下课程:

class Foo<T>
{
    private T arg;
    private Foo(T t) {
        // private!
        this.arg = t;
    }   

    @Override
    public String toString() {
        return "My argument is: " + arg;
    }   
}

我将如何构建一个new Foo("hello")使用反射?

ANSWER

基于杰塔尔博恩的回答 https://stackoverflow.com/questions/5629706/java-accessing-private-constructor-with-type-parameters/5629817#5629817,以下作品:

public class Example {
    public static void main(final String[] args) throws Exception {
        Constructor<Foo> constructor;
        constructor = Foo.class.getDeclaredConstructor(Object.class);
        constructor.setAccessible(true);
        Foo<String> foo = constructor.newInstance("arg1");
        System.out.println(foo);
    }   
}

确保您使用getDeclaredConstructors当获取构造函数并将其可访问性设置为 true 时,因为它是私有的。

像这样的东西应该有效。

Constructor<Foo> constructor= (Constructor<Foo>) Foo.class.getDeclaredConstructors()[0];
constructor.setAccessible(true); 
Foo obj = constructor.newInstance("foo"); 
System.out.println(obj);

Update

如果您想使用 getDeclaredConstructor,请将 Object.class 作为参数传递,该参数将转换为通用 T。

Class fooClazz = Class.forName("path.to.package.Foo");
Constructor<Foo> constructor = fooClazz.getDeclaredConstructor(Object.class);
constructor.setAccessible(true); 
Foo obj = constructor.newInstance("foo"); 
System.out.println(obj);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:使用类型参数访问私有构造函数 的相关文章

随机推荐

  • ORA-00972 标识符别名列名太长

    我有一个查询 例如 SELECT column as averyveryveryverylongalias more than 30 characters FROM Table name 它返回错误ORA 00972 标识符太长 有什么技巧
  • 什么是构建依赖项?

    构建依赖关系 中解释货物簿 https doc rust lang org cargo reference specifying dependencies html build dependencies 您可以依赖其他基于 Cargo 的板
  • 哪个 Haskell 计算机图形几何库?

    我想用 Haskell 做一些计算机图形学实验 这将包括进行一些几何计算并最终编写光线追踪器 我应该选择哪个库来轻松处理向量 矩阵及其相关操作 Hackage 上很少有包括像这样好看的vect http hackage haskell or
  • 我应该将 PHP include/require 语句放在 HTML 中的什么位置?

    我在文件中创建了一个 PHP 类 现在我想在 HTML 页面中使用它 我应该把它放在哪里require or includeHTML 页面内的声明 有没有表现在 HTML 的开头或结尾加载它之间的区别 还是根本没有区别 应该是在 PHP 脚
  • 我可以从 React Native 项目中删除 tvOS 吗?

    Eventually I will be submitting a react native app to the app store but the app will only run on iOS not tvOS Will I be
  • 如何将 pymongo.cursor.Cursor 转换为字典?

    我正在使用 pymongo 查询一个区域内的所有项目 实际上是查询地图上一个区域内的所有场馆 我用了db command SON 在搜索球形区域之前 它可以返回一本字典 字典中有一个名为results其中包含场馆 现在我需要在一个正方形区域
  • 在 ReportLab 中向画布元素添加超链接的最简单方法是什么?

    我正在使用 ReportLab 使用 Python 制作 pdf 我想向画布添加一个形状 并让该形状充当超链接 使以下示例中的矩形链接到 google com 的最简单方法是什么 from reportlab pdfgen import c
  • 处理变量的范围:内部循环

    作为一名直接进入 Go 的 JS 开发者 如果长度超过commits不止一个 我没有太多时间来完成这件事 而且我搜索的时间比我希望的要长 关于如何重组它或让它发挥作用有什么想法吗 case github PushPayload push p
  • VSCode:activeTextEditor编码

    有什么方法可以在我的扩展代码中获取当前文档编码 位于底部栏中 就像是vscode window activeTextEditor encoding 这似乎不可能 由于几乎不可能证明是否定的 因此本答案的其余部分记录了我的探索内容 字符串 e
  • PhantomJS CPU(核心)受限吗?

    我开始做一些基于并行浏览器的测试 并想看看在达到 100 CPU 之前我可以在 EC2 大型机器上并行运行多少个浏览器 我正在使用 JMeter webdriver 插件来实际运行浏览器 对于 FireFox 实际上每个 CPU 核心有 1
  • 使用 Mongodb 和 Node.js 在一个页面中处理多个表单

    我的登录和注册表单都在同一页面上 我已经指定了两种不同的路由来发布数据 但是当我点击注册表单末尾的注册按钮时 它会保存登录表单输入 没有 我看了这个问题 多种表单 一张处理页面 https stackoverflow com questio
  • 在word文档的标题中添加图片时出现问题

    我正在Word文档的标题中添加图片 它显示图像的框架并显示 当前无法显示图像 如果我将文本添加到标题 它会显示文本 如果我在文档正文中添加图像 它也会显示图像 获取图像也是如此 它在标题上显示文本 但没有图像 我的支票快用完了 有人可以建议
  • iOS - Xcode 错误:由于系统完整性保护而无法附加到进程

    当我从 XCode 运行按钮运行应用程序共享扩展 然后尝试共享文件时 XCode 经常显示以下错误 有人知道是什么原因造成的吗 错误 由于系统完整性保护 无法附加到进程 系统完整性保护 SIP 又名无根 是 OS X 10 11 中的一项新
  • 巨大下拉列表的替代方案(24,000 多个项目)

    在我的管理部分中 当我编辑项目时 我必须将每个项目附加到父项目 我有超过 24 000 个父项目的列表 这些项目按字母顺序列在下拉列表 音乐艺术家列表 中 在下拉菜单中列出所有这些项目的编辑页面有 2MB 对于使用旧机器的人来说 它的速度非
  • 由尾随空格分隔的 Cobol 字符串

    WORKING STORAGE FIRST STRING PIC X 15 VALUE SPACES SECOND STRING PIC X 15 VALUE SPACES OUTPUT STRING PIC X 31 VALUE SPAC
  • Mac/iPhone:有没有一种方法可以在不使用 Objective-C 的情况下获取线程标识符?

    有没有一种方法可以获取当前正在运行的线程的任何类型的线程标识符 而无需借助 Objective C 的 NSThread 我正在改进我们的自定义调试跟踪系统以正确处理多个线程 对于跟踪输出的每一行 我想打印线程 ID 或线程名称 线程可以通
  • Hamcrest 与 MockMvc:检查键是否存在,但值可能为空

    我正在使用 MockMvc 进行一些测试 我想验证 JSON 响应的结构 具体来说 我想确保属性的键存在 并且值是某种类型或为 null keyToNull null This may be null or a String keyToSt
  • Play 2.0 应用程序的依赖关系管理

    我们小组对基于 JVM 的开发有些陌生 我们正在开发由许多其他库组成的应用程序 我们发现 Play 框架对于开发 Web 应用程序非常有吸引力 该框架很棒 但我们本地开发的库的依赖管理有点令人烦恼 我们正在使用 Play 2 0 的 RC2
  • (响应式)表格宽度不适合 ios safari 上 iframe 内的容器

    我在 iPhone 的 safari 上的 iframe 内渲染表格时遇到问题 这是示例 http jsfiddle net qb86ojms http jsfiddle net qb86ojms 如果您在桌面浏览器 较小的尺寸 或 and
  • Java:使用类型参数访问私有构造函数

    这是后续这个关于java私有构造函数的问题 https stackoverflow com questions 2599440 accessing the private constructor 假设我有以下课程 class Foo