Clojure 2024状态调查!分享你的想法。

欢迎!请参阅关于页面以了解更多关于这个网站的信息。

0
Java互操作

大家好,

我有许多Java序列化对象想要检查和转换。

我尝试使用简单的Clojure与Java互操作的方法进行以下操作
(抱歉用迭代风格来写,我通常不直接与Java交互,并且我对这门语言也不是很熟悉,但这似乎没有clojuristic封装。

包含对象的文件:input.ser

(import '[java.io FileInputStream ObjectInputStream])
(def fis (new FileInputStream "input.ser"))
(def ois (new ObjectInputStream fis)

(.readObject ois) ;; this fails due to a ClassNotFoundException

在加载对象后,有没有办法得到一个“几乎是”反序列化的视图来检查?由于这个文件在序列化前压缩了字节,所以它本身是不可读的。

1 个答案

+2

被选中
 
最佳答案

您需要将类路径上的类添加到反序列化中去。这正是Java序列化工作的方式。

可能有一种通用的Java序列化对象内省器,但我不了解这种内省器。实际上,每个类都可以编写定制化的序列化/反序列化代码,所以如果不了解这些代码,我不确定是否存在一个通用的内省器。

...