我想学习一下fastJson2的内部具体实现,但是这里objectReader是手动构造出来的,没办法debug进入它的方法,不知道有没有什么办法可以debug里面,谢谢了。
我的目的是想debug进readObject这个方法
原提问者GitHub用户ocean23
在这种情况下,我们可以尝试使用反射技术来调用私有方法,并修改代码中objectReader相应的部分。以下是一个示例用于调用私有方法:
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
ObjectReader objectReader = new ObjectReader();
// 获取到 readObject 方法
Method readObjectMethod = objectReader.getClass().getDeclaredMethod("readObject", String.class);
// 设置方法可访问
readObjectMethod.setAccessible(true);
// 调用私有方法
Object result = readObjectMethod.invoke(objectReader, "test"); // 在这里传递你需要的参数
// 输出结果
System.out.println(result);
}
} 将这个代码片段替换到你的代码中,对应修改了objectReader相应的部分,使用这种方法调用"readObject"这个私有方法并传递需要的参数。然后你应该能够看到该方法的详细输出并找到你需要的问题。
请注意,使用反射技术需要小心,因为它可能会影响到代码的可维护性和可移植性。请在实践中小心使用。
com.alibaba.fastjson2.reader.ObjectReaderCreatorASM 看这个类的代码
ObjectReader1不是ObjectReader_1,如果要dump下来看,在com.alibaba.fastjson2.reader.ObjectReaderCreatorASM#createObjectReader里有这样的代码
byte[] code = cw.toByteArray(); // 把这个byte数组写到一个文件就可以看到了
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。