有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将代码从方法插入新类

我试图在bytebuddy之上创建一个库,可以用来对类执行运行时转换。我正在制作的API不能直接使用ByteBuddy将方法代码插入到转换的类中(我希望将未注释的方法添加到转换的类中,并将带有@Inject注释的方法注入到现有方法的头部或尾部),我解决互操作性不足的方法是使用ByteBuddy创建一个临时类,在我的高级API和ByteBuddy的建议API之间进行转换。但我不知道如何将高级API中的一个方法中的所有代码插入到低级API中定义的方法中,因为我实际上无法使用建议来实现这一点。我有办法做到这一点吗

这是我到目前为止提出的代码

fun apply(vararg transformerClasses: Class<*>) {
    for(clazz in transformerClasses) {
        val builder = ByteBuddy()
                .subclass(clazz)
        val mixinAnnotation = clazz.getAnnotation(Mixin::class.java) as? Mixin ?: throw RuntimeException("Passed transformer class without @Mixin annotation")
        val mixinTarget = mixinAnnotation.target.java

        for(method in clazz.declaredMethods) {
            if(method.annotations.isEmpty()) {
                builder.defineMethod(method.name, method.returnType, Visibility.PUBLIC, Ownership.STATIC)
                        .intercept(???)
            }
        }
    }
}

共 (0) 个答案