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

在运行时扩展类

吕高寒
2023-03-14
问题内容

所以对于这个项目,我试图在运行时扩展一个类。我想知道,这有可能吗?如果是这样,我该怎么办?是否有用于这些目的的库?


问题答案:

CGLib是您要查找的库。它在扩展类或在运行时实现接口方面非常强大,因此许多流行的框架(如Spring或Hibernate)都使用它。

您可以使用以下代码创建类扩展

 public Object createProxy(Class targetClass) {
    Enhancer enhancer = new Enhancer();
    enhancer.setSuperclass(targetClass);
    enhancer.setCallback(NoOp.INSTANCE);
    return enhancer.create();
   }

尽管您可能会NoOp使用具有所需逻辑的有用的方法拦截器替换回调。



 类似资料:
  • 问题内容: 我有能力在编译时扩展一个类,但是我需要能够在运行时使用已实例化的超类的实例创建此子类的实例。 从理论上讲这应该是可能的,因为已经在子类构造函数之前调用了超类构造函数。 我没有足够的程序访问权限来更改实例化到我的子类或中断原始实例化。 用例:现有一个类X实例的数组。我的代码在之后加载。我需要使用已加载的子类Y扩展X来覆盖实例X之一的方法之一。父程序仅通过该数组访问对象,因此我想用Y实例替

  • Windows运行时组件是自包含的对象,可以从任何语言(包括 C# ,Visual Basic,JavaScript和C++)实例化和使用。 除了在上一章中看到的.NET Core元包之外,UWP应用程序还有一个默认的引用 - 通用Windows SDK。 通用Windows是对Windows运行时的引用,它已被考虑到一系列API契约中。 设备系列中的一组API被分解为称为API契约的细分。可以在

  • 问题内容: 我需要允许客户端用户在运行时扩展JPA实体包含的数据。换句话说,我需要在运行时向实体表添加一个 虚拟列 。该 虚拟列 将仅适用于某些 数据行, 并且可能有很多这些 虚拟列 。因此,我不想在数据库中创建实际的其他列,而希望使用代表这些 虚拟列 的其他实体。 例如,请考虑以下情况。我有一个 Company 实体,其字段标记为 Owner ,其中包含对 Company Owner 的引用。在

  • 当我为我的项目运行我的bitbucket管道时,我在颤振测试期间得到一个错误: /root/.pub-cache/hosted/pub.dartlang.org/firebase_core-1.24.0/lib/src/firebase_app.dart: 18:25:错误:未找到成员:'FirebaseAppPlatform.verify扩展'。FirebaseAppPlatform.verif

  • 我知道如何在selenium webdriver中加载chrome扩展。但是我没有看到任何描述如何从Selenium运行chrome扩展的帖子/博客。< br> 我需要明确地让chrome扩展运行/让它从selenium执行它的功能。比如我想用Selenium Webdriver的这个扩展清除Chrome浏览器的缓存。< br> 我可以先做吗?或者Selenium WebDriver是否只帮助我将

  • 关于Quarkus,我有两个问题: > 当不使用本机模式时,quarkus可以与任何java库一起使用吗?我不明白quarkus扩展的含义,例如https://github.com/quarkiverse中为非本机图像提供的扩展。这些扩展是否只有在本机模式下使用quarkus时才需要?