我有一个界面,可以说它看起来像这样.

public interface TestObject {

String getString();

Long getLong();

}

我实际上想使用ByteBuddy构建该对象的具体实现.

这是我尝试过的.

public class Runme {

public static void main(String[] args) {

ByteBuddy bb = new ByteBuddy();

Class> clz = bb

.subclass(TestObject.class)

.method(any()).intercept(MethodDelegation.to(Interceptor.class))

.make()

.load(Object.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)

.getLoaded();

try {

Object test = clz.newInstance();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

}

public class Interceptor {

public Object intercept(@Origin String method, @AllArguments Object[] args) throws Throwable {

System.out.println("I have intercepted a call");

return "Hello";

}

}

}

我得到这个错误

Exception in thread "main" java.lang.IllegalArgumentException: None of [] allows for delegation from public boolean java.lang.Object.equals(java.lang.Object)

at net.bytebuddy.implementation.bind.MethodDelegationBinder$Processor.process(MethodDelegationBinder.java:881)

at net.bytebuddy.implementation.MethodDelegation$Appender.apply(MethodDelegation.java:1218)

at net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForDefinedMethod$WithBody.applyBody(TypeWriter.java:510)

at net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForDefinedMethod.apply(TypeWriter.java:444)

at net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForCreation.create(TypeWriter.java:3193)

at net.bytebuddy.dynamic.scaffold.TypeWriter$Default.make(TypeWriter.java:1481)

at net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder.make(SubclassDynamicTypeBuilder.java:234)

at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$AbstractDelegatingBuilder.make(DynamicType.java:2177)

at com.meta.testbytebuddy.Runme.main(Runme.java:22)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

我在做什么错..如果我想实现多个接口怎么办?

我正在使用ByteBuddy进行代码生成.

delegation java_如何使用Byte-Buddy从接口构建Java类的具体实...相关推荐

  1. 最新版Byte Buddy完全支持Java 11

    Java字节码工程库Byte Buddy最新版本完全支持Java 11以及自Java 8以来引入的所有类文件和字节码新特性.其中包括新的ConstantDynamic(有时称为condy)特性和Jav ...

  2. 字节码增强技术 Byte Buddy 、Javassist、Instrumentation

    概述 字节码增强技术 有 Byte Buddy .Javassist等多种. 如果是在同一个包中,没有问题,不需借助Instrumentation 如果是第三方包,想不修改代码的情况下实现代理技术,就 ...

  3. Java Agent简介及使用Byte Buddy和AspectJ LTW监控方法执行耗时

    1.什么是Java Agent Java Agent提供了一种在加载字节码时,对字节码进行修改的方法.一共有两种方式执行:一种是在main方法执行之前,通过premain来实现:另一种是在程序运行中, ...

  4. 探针技术-JavaAgent 和字节码增强技术-Byte Buddy

    能够基于Java Agent编写出普通类的代理 理解Byte Buddy的作用 能够基于Byte Buddy编写动态代理 1 Byte Buddy Byte Buddy 是一个代码生成和操作库,用于在 ...

  5. 基于Byte Buddy的探针开发实践

    目录 前言 一.Bety Buddy是什么? 1.Bety Buddy 定义 2.代码生成的其他的库类 3.代码生产代理库类性能指标 二.使用步骤 1.引入库 2.核心代码示例 总结 前言 在研发生产 ...

  6. Byte Buddy 入门教程

    为什么需要运行时代码生成 我们知道,Java 是一种强类型的编程语言,即要求所有变量和对象都有一个确定的类型,如果在赋值操作中出现类型不兼容的情况,就会抛出异常.强类型检查在大多数情况下是可行的,然而 ...

  7. 通过使用Byte Buddy,便捷地创建Java Agent

    Java agent是在另外一个Java应用("目标"应用)启动之前要执行的Java程序,这样agent就有机会修改目标应用或者应用所运行的环境.在本文中,我们将会从基础内容开始, ...

  8. byte buddy学习笔记

    字节码工程库具有ConstantDynamic特性,也可以被称为condy特性,和Java11的Nestmates.字节码工程库Byte Buddy支持Java 11以及自Java 8以来引入的所有类 ...

  9. abstract类_012 JAVA 抽象类、接口、String类的基础了解

    1.抽象方法和抽象类 抽象方法:使用abstract修饰的方法,没有方法体,只有声明.抽象方法可以当做是一种规范,让子类必须实现. 注意: 1.抽象方法没有方法体,只能以分号结尾 2.抽象方法只能声明 ...

最新文章

  1. 12/12 day06
  2. matlab dsearchn,cKDTree与dsearchn
  3. xtrabackup 安装、备份和恢复
  4. js里规定输入的数值只能是数字
  5. Bayesian Neural Network for regression (PRML)
  6. 【网络安全】如何搭建MySQL恶意服务器读取文件?
  7. android服务的原理,Android学习笔记:IntentService
  8. 游戏行业的人工智能设计:AI的设计和实施
  9. 推荐一款.NET Core开源爬虫神器:DotnetSpider
  10. 计算机控制技术摘要,计算机控制技术摘要.ppt
  11. 轻轻松松统计代码行数
  12. Uva(10158)
  13. mysql 5.5 中创建的数据库名称全都是小写
  14. redis在window下的启动
  15. Linux中log打印输入输出的格式字符串
  16. Maven配置ojdbc14-10.2.0.4.0.jar
  17. OpenCV常用库函数
  18. https://blog.csdn.net/sxf359/article/details/71082404
  19. umount 无法成功
  20. 盛迈坤电子商务:网店有哪些营销活动

热门文章

  1. 在html中创建最小的文本标签是,HTML里面的文本标签
  2. mqtt 发送消息过多_eclipse mqttclient 性能MQTT(32202): 正在发布过多的消息
  3. Python自学日记---用户输入和while语句
  4. boost I 操作系统相关的库(一)
  5. 六顶思维帽的思考,敏捷开发?——By Me
  6. 子网掩码必须是相邻的是什么意思_子网划分与子网掩码
  7. 2022-3-25 Leetcode 921.使括号有效
  8. leetcode系列-226.翻转二叉树
  9. Psoc Creator 入门——接近感应组件的使用
  10. java中的uuid是啥,UUID在Java中的两种发作方式