当前位置: 首页 > 面试题库 >

由于ClassLoader问题而导致的ClassCastException解决方案

阚吕恭
2023-03-14
问题内容

我有两个加载同一个类的ClassLoader。因此,显然这些不能互相投射。但是我需要访问在其他ClassLoader中创建的对象。

我可以访问两个ClassLoader。如何在其他课程中使用该对象?我不需要强制转换对象以匹配当前的ClassLoader。

但是问题在于返回的对象的类型为Object。因此,我必须放弃该对象才能访问某些方法。我怎样才能做到这一点?像下面这样的普通类型转换会导致ClassCastException,我已经知道了。

Mojo mojo = (Mojo) descriptor.getMojo();

descriptor#getMojo()返回类型的对象,Mojo但方法返回Object。怎么办呢?

让我知道您是否需要更多信息。

我已经阅读了有关类加载的所有理论,但没有一个为它指定合适的解决方案。


问题答案:

AFAIK,不,您不能将一个类加载器加载的类的对象转换为另一类加载器。

  • 一种解决方案是创建一个“通用”类加载器,以加载要由自定义类加载器使用的类。因此,在您的情况下,您将有一个新的类加载器,它将加载给定的类,而您的自定义类加载器将扩展此类加载器。
  • 另一个解决方案是在两个类加载器之间传递“序列化”状态。将一个实例序列化为字节数组,并通过反序列化对象流在另一个类加载器中重建对象。


 类似资料:
  • 本文向大家介绍解决tensorflow由于未初始化变量而导致的错误问题,包括了解决tensorflow由于未初始化变量而导致的错误问题的使用技巧和注意事项,需要的朋友参考一下 我写的这个程序 出现了如下所示的错误: 原因是倒数第二行的sub没有初始化,倒数第三行应该是初始化sub的,但是打错了,成了sun,这样后面出现的sub就相当于没有初始化,所以出现了变量没有初始化的错误。 以上这篇解决ten

  • 最近,我将我的项目从Hibernate版本3.1迁移到4.3,为了更好的性能,我试图使用注释而不是我的xml映射。在继承类的所有实体类中,我都有以下异常。错误是"org.hibernate.映射异常" 我试图将targetEntity添加到manytone类中,并添加了@Access(AccessType.PROPERTY),但没有任何效果。无法更改为字段注释,因为我有150个实体类。我试图删除扩

  • 我正在处理下面的异常中的。 我对此做了很多研究来防止这种情况。在谷歌搜索之后,我发现,当本机内存由于同时创建大量线程而耗尽时,就会发生这种情况。 现在,在分析了下面的日志之后,我们可以发现,在应用程序内部,线程是明确创建的,这是一个非常非常糟糕的做法。(专家能否证实这一点?) 我更喜欢WAS管理,对Java和Java中的线程创建不太了解。现在我需要和开发人员讨论这一点,但在此之前,我想100%地确

  • 我正在尝试构建海豚播放器,但我得到了他的错误:

  • 本文向大家介绍解决Tensorflow sess.run导致的内存溢出问题,包括了解决Tensorflow sess.run导致的内存溢出问题的使用技巧和注意事项,需要的朋友参考一下 下面是调用模型进行批量测试的代码(出现溢出),开始以为导致溢出的原因是数据读入方式问题引起的,用了tf , PIL和cv等方式读入图片数据,发现越来越慢,内存占用飙升,调试时发现是sess.run这里出了问题(随着f

  • 本文向大家介绍BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法,包括了BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 我用过的两个版本: v0.5.2-dev,0.4.5 这里针对于提交方法进行说明一下,如下代码: 以上所述是小编给大家介绍的Boot