[英]Bytebuddy - class redefinition in runtime
您能否告诉我,如果使用字节预算,这是可能的情况:
MyInteger
替换属性类型,例如int和Integer。 MyInteger
可以拦截此属性的设置。 我不想使用设置器,因为并非所有属性都必须具有设置器。 SomeClass.setSomeInt(1)
每次调用都将调用MyInteger上定义的某个方法。 MyInteger
> int
和MyInteger
> Integer
。 基本上,运行时代理直接基于属性。
使用Byte Buddy(或我所知道的任何高级代码生成库)是不可能的。 字节伙伴旨在实现二进制兼容的更改。 如果您更改了字段的类型,则需要更改所有访问该字段的代码。 与更改类的私有实现相比,由于更改了类的API,这将需要全局代码更改。
我建议您将访问器方法添加到类中并拦截这些访问器。 IDE可以帮助您。 另外,通过拦截这些访问器,您可以自由决定拦截期间的操作。
在运行时应该不需要更改很多字段,如果是,我建议使用updater exec进行数据库存储。 然后,您可以通过任何喜欢的接口更改数据库,并且在重复轮询类时,它将从数据库中获取内容并为您完成所有设置。
这应该对任何代码注入器或Java代理BUUUT都可行,否则这样做是错误的。 也要花费大量的开销才能获得更好的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.