如何了解图书馆的运作方式

时间:2016-03-05 00:50:52

标签: java json

这是一个抽象的问题。

一般来说,我该如何学习图书馆?我并不是说学习如何使用它,我的意思是学习设计和相互作用的细节。

关于我的意思的更多细节,这是促使我提出这个问题的情况。

我的服务能够将呼叫的相关数据记录到json blob中。我正在研究一些读取json blob的代码,重建blob中的对象,并重放blob中的调用。我遇到的问题是,当重建其中一个对象时,我得到一个异常,说“字段X不能为空”,但是json blob中的字段不为空,所以显然有些错误。堆栈跟踪在Jackson库中大约有15个级别,所以要判断出错是不容易的。

老实说,我不介意学习图书馆如何解决这个问题。我觉得这很有意思。我只是不知道从哪里开始。我觉得我刚刚交了一个大项目,除了那个没有方向的文件,在高层次上,我可以想象Java对象的序列化和反序列化是如何工作的。

3 个答案:

答案 0 :(得分:1)

  

一般来说,我该如何学习图书馆?我不是故意的   学习如何使用它,我的意思是学习设计和细节   互通。

通常,成熟的图书馆(如您在问题中提到的Jackson)在其文档中对其设计有很好的介绍。然后,您可以深入了解"交互的详细信息"如果需要,可以使用源代码。

我认为学习图书馆的一般顺序如下 1.介绍/高级/设计视图
2.更具体的部分
3.源代码(很少应该达到这个级别)

在学习图书馆时,我通常不会发现自己与源代码视图一样低......毕竟,如果你在这个级别下来,有人可能会说你可以自己编写代码。 ..libraries用于抽象完成任务所需的所有代码(如Jackson的情况下的JSON数据绑定)。

我喜欢jackson-databind页面按照一般特定顺序排列的内容......您可以立即启动并运行,如果需要在页面下方进行深入挖掘。

给自己时间学习图书馆......这不会在一夜之间发生......

答案 1 :(得分:1)

  

一般来说,我该如何学习图书馆?我并不是说学习如何使用它,我的意思是学习设计和相互作用的细节。

一般情况下,你没有。这才是重点。一个编写良好的库具有稳定且记录良好的界面。谈到Java库,“记录良好”意味着一件事:Javadoc。您可以浏览Javadoc以获得库的概述,并且可以在IDE中将Javadoc附加到项目中,这样您只需将鼠标指针悬停在其上即可查看类或方法的文档。库的客户端(使用它的程序)和编写它们的程序员不应该知道或关心它在内部如何工作。如果你知道它是如何工作的,你可能会依赖它的工作方式,然后你的程序会在它发生变化时中断。

如果你想确保图书馆没有做一些愚蠢或恶意的事情,或者你想为了教育目的而研究它,最好的办法就是阅读源代码。

答案 2 :(得分:-1)

我认为最好的方法是阅读图书馆的源代码而不仅仅是阅读参考文件。我建议您使用Java Decompiler或Jad工具来获取源代码。