gpt4 book ai didi

java - 拦截私有(private)字段访问进行延迟加载

转载 作者:行者123 更新时间:2023-12-01 05:27:15 24 4
gpt4 key购买 nike

我有一个框架,可以代表客户端加载任意类的实例,并且希望字段(特别是私有(private)字段)仅在首次访问字段时才延迟初始化/加载。

有没有办法在返回值之前拦截此类私有(private)字段访问并将值注入(inject)字段(也可能“缓存”它们)?

我猜 java.lang.reflect.Proxy/InitationHandler 已被排除,因为它们只能拦截方法调用。

我有一种直觉,字节码操作库可以处理这个问题。我查看了 ASM、Javassist、BCEL、cglib 并进行了全面搜索,但没有找到任何关于如何实现这一目标的明确说明。

最佳答案

这对于使用 ASM 或类似框架的字节码检测来说当然是可行的,但您必须了解字节码内部工作原理以及一些 JVM 内部结构。

更简单的方法是使用 AspectJ 并将方面应用于对象。这个AOSD'07 paper中有一些类似的例子关于 Java 对象的透明集群。

关于java - 拦截私有(private)字段访问进行延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9537885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com