当类型信息不可用时如何转换为私有内部类?

2023-12-30

我有类似以下情况:

// In some library code
public class A
{
    private class B
    {
        Object value;
    }
}

// In my code
Object o;

// o is initialized to an instance of B somehow
// ...

B bInstance = (B) o;

我将如何将对象强制转换为 B 类型假设 B 的类型不可访问?

更详细地解释一下,A 是not我的代码库的一部分。它是图书馆的一部分。我可以访问一个我知道类型为 B 的对象,但无法转换它(例如在 IDE 中),因为类型信息不可见。这是一个编译错误。情况非常有限。我认为使用反射可能可以实现这一点,但恐怕我没有很多使用该特定范例的经验。有没有办法解决?我感谢社区提供的任何意见。


也许您应该访问一个界面?或者说它也无法访问?

我不知道以下内容是否是您所需要的,但这也许可以帮助您找到解决方法(因为您要求使用反射):

由于您以某种方式拥有 B 实例,您应该尝试:

Class<?> innerClass = o.getClass();

然后如果可能的话,尝试使用反射来获取您需要的东西,如下所示:

Field allFields[] = innerClass.getDeclaredFields();    
Constructor<?> constructors[] = innerClass.getDeclaredConstructors();
Method allMethods[] = innerClass.getDeclaredMethods();

constructor.setAccessible(true);  sets the constructor accessible.

您可以自己实例化该实例吗?还是使用以某种方式返回的实例很重要?

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

当类型信息不可用时如何转换为私有内部类? 的相关文章

随机推荐

  • 真的很简单的Python HTTP代理吗? [复制]

    这个问题在这里已经有答案了 我到处寻找并发现了数百万个 python 代理服务器 但没有一个完全符合我的要求 我认为 s 一般来说 我对 python 有相当多的经验 但我对 HTTP 协议的深层秘密世界还很陌生 我认为可能有用的是一个非常
  • MVC-4 文件上传成功消息

    我在上传文件后显示成功消息时遇到了一些问题 我首先尝试使用 ViewBag Message 它运行良好 并在文件上传后显示成功消息 这就是我想要的 但后来我找不到一种方法 几秒钟后将该消息更改回 选择要上传的文件 以便用户了解他现在可以上传
  • 可以在 Twilio 中保存短信并安排发送吗?如果没有,我该如何完成这件事?

    我刚刚注册了 Twilio 试用帐户 我没有看到任何功能说明如何创建和保存多条短信供以后使用以及安排何时将它们发送到群组 这可能吗 或者有没有更好的软件可以做到这一点 Twilio 传道者在这里 查看您的个人资料 您的首选语言似乎是 PHP
  • “For”循环第一次迭代

    我想询问是否有一种优雅的 pythonic 方式在第一次循环迭代中执行某些函数 我能想到的唯一可能性是 first True for member in something get if first root copy member fir
  • 使用 CMake 和 GCC 4.1.2 链接到 stdc++

    我正在开发一个库 需要确保它可以使用 4 1 2 进行编译 我知道 它没有给我带来任何乐趣 因此 我在 Fedora 14 机器上下载 编译并安装了 GCC41 现在在 CMake 中我只将以下内容更改为变量 CMAKE CXX COMPI
  • JDBC 调用以数组为参数的存储过程

    我正在尝试使用 java 代码调用下面的过程 但我收到了几个错误 主要是类型转换 我想我在某个地方搞砸了 有人可以看一下吗 这是我第一次这样做 一点帮助就太好了 proc DECLARE car details tab car detail
  • 如何检查对象以查看其类型并返回强制转换的对象

    我有向其传递对象的方法 在这个方法中 我检查它的类型 并根据类型对它执行一些操作并返回一个 Long 我已经尝试了所有我能想到的方法来做到这一点 但我总是收到几个编译器错误 告诉我它需要某个对象 但得到另一个对象 有人可以向我解释我做错了什
  • .NET Parallel.Foreach 如何构造 IO 密集型操作

    比方说 我编写了一个程序 该程序应该读取给定的所有文本文件并从中生成对象列表 所以步骤是 从磁盘读取给定文件夹中所有文件的文件内容 每个文件内容创建唯一的对象 我想知道 NET 中的 Parallel ForEach 或任何其他并行结构 是
  • 如何使用 C# 任务并行库和 IProducerConsumerCollection 实现通用回调?

    我有一个向基于 Web 的 API 提交请求的组件 但必须限制这些请求 以免违反 API 的数据限制 这意味着所有请求必须通过队列来控制它们的提交速率 但它们可以 并且应该 并发执行以实现最大吞吐量 每个请求必须在将来完成时的某个时刻向调用
  • ActionBarSherlock (ABS):如何自定义操作模式关闭项的文本?

    我正在使用 ABS 版本 4 我需要简单地更改除了操作模式关闭图标之外显示的默认 完成 文本 但我真的不知道该怎么做 我认为文本需要可定制 至少有两个充分的理由 完成 并不适合所有情况 例如 取消 可能更合适 我见过一些应用程序 例如 Ga
  • 使用 Devise 和 Rails Admin 对特定路由进行身份验证

    我使用 Rails Admin 和 Devise 来管理和用户模型 我已向用户模型添加了一列 admin 以指示其身份 In the config routes rb 我安装 admin for RailsAdmin Engine 我只想允
  • 在 C# NET 中检测应用程序关闭?

    我正在编写一个小型控制台应用程序 将作为服务运行 它基本上在运行时启动 Java 应用程序 如果 Java 应用程序关闭则自行关闭 如果 Java 应用程序关闭则关闭 Java 应用程序 我认为前两个工作正常 但我不知道如何检测 NET 应
  • Angular - 使用组件选择器作为属性会让 tslint 生气

    我正在尝试创建一个具有属性作为选择器的组件 如下所示 Component selector my attribute selector template export class MyComponent Some cool stuff 然而
  • AQL 查询返回 Promise

    我一直在尝试使用肥皂消息从 Arangodb 获取查询结果到我的前端服务 Angular 4 我能够获得查询结果 但在 console log 中打印出来 但是我怎样才能在这个函数 myService 下得到它呢 换句话说 如何将查询结果输
  • Excel 2016:在单元格中搜索多个术语

    我正在尝试在 Excel 2016 中使用 OR 条件在单元格中搜索多个字符串 例如 我有一根绳子abcd1234我想找到ab OR 12 我正在使用德语版本 该功能SEARCH叫做SUCHEN它的行为方式应该相同 I found 这个答案
  • oplog 在独立 mongod 上启用,不适用于副本集

    我正在将 mongod 作为独立服务器运行 现在我想为其启用 oplog 我想知道这是否可能 我知道我可以通过创建单节点 ReplicaSet 来做到这一点 但我想在没有副本集的情况下做到这一点 我收到了 MongoDb 团队的回复 一切正
  • Spark:合并两个数据帧,如果两个数据帧中的ID重复,则df1中的行覆盖df2中的行

    有两个数据帧 df1 和 df2 具有相同的架构 ID 是主键 我需要合并两个 df1 和 df2 这可以通过以下方式完成union但有一个特殊要求 df1 和 df2 中是否存在具有相同 ID 的重复行 我需要将其保留在 df1 中 df
  • 如何将自定义 CSS 应用到元素内的 Shadow DOM?

    我用 IONIC 4 创建了一个新项目 一切都很好并且工作正常 但是当我尝试将 CSS 应用于内部存在的元素时 shadow根 下面是我的 HTML 代码
  • 在 Visual Studio 中更改选定文本的文本颜色[重复]

    这个问题在这里已经有答案了 可能的重复 我无法在 Visual Studio 2010 中编辑选定的文本前景色 有人知道如何执行此操作吗 https stackoverflow com questions 2256942 i cant ed
  • 当类型信息不可用时如何转换为私有内部类?

    我有类似以下情况 In some library code public class A private class B Object value In my code Object o o is initialized to an ins