请告诉我这是否可能是字节伙伴的情况:
MyInteger
。 MyInteger
用于拦截此属性的设置。我不想使用setter,因为并不是必须为所有属性设置setter。SomeClass.setSomeInt(1)
都会调用MyInteger上定义的某些方法。MyInteger
- > int
和MyInteger
- > Integer
。基本上直接在属性上运行代理。
答案 0 :(得分:0)
使用Byte Buddy(或我所知的任何高级代码生成库)都无法做到这一点。 Byte Buddy旨在实现二进制兼容的更改。如果更改了字段的类型,则需要更改访问此字段的所有代码。与更改类的私有实现相比,这需要更改类API的全局代码更改。
我建议你在你的类中添加访问器方法并拦截那些访问器。 IDE可以帮助您。此外,通过拦截这些访问者,您可以自由决定在拦截期间做什么。
答案 1 :(得分:0)
在运行时不应该有很多字段需要更改,如果是,我会建议使用更新程序exec的数据库存储。然后,您可以通过任何您喜欢的界面更改数据库,并且当轮询类重复时,它将从数据库中获取内容并为您完成所有设置。
这应该适用于任何代码注入器或java代理,BUUUT,它会做错的方式。同样也会花费你很多开销而没有更好的结果。