ByteBuddy如何在Android中创建另一个ByteBuddy创建的类的子类?

问题描述

我正在使用byte-buddy:1.10.17byte-buddy-android:1.10.17为Android编写Java代码来动态创建类。我想动态创建一个类,该类将是另一个动态创建的类的子类。 这是我想要做的示例代码

AndroidClassLoadingStrategy loadingStrategy = new AndroidClassLoadingStrategy.Wrapping(context.getCacheDir());

DynamicType.Builder builder = new ByteBuddy().subclass(Object.class).name("TestParentClass");

Class testParentClass = builder.make().load(Test.class.getClassLoader(),loadingStrategy).getLoaded();

builder = new ByteBuddy().subclass(testParentClass).name("TestChildClass");

Class testChildClass = builder.make().load(Test.class.getClassLoader(),loadingStrategy).getLoaded();

但是创建子类时我得到Caused by: java.lang.classNotFoundException: Didn't find class "TestParentClass"

我也检查了this question,但它根本不起作用。

解决方法

不要使用Test的类加载器。那将在您的类路径中寻找一个类文件。动态类TestParentClass将没有任何对象。而是从TestParentClass获取类加载器:

$.extend($.fn.dataTable.defaults,{
    serverSide: false,});