当前位置: 首页 > 知识库问答 >
问题:

如何将Java类实例转换为Clojure中的Object[]

闻人昊昊
2023-03-14

我正在使用一个实现自己的Array类的JDBC库。为了使用所述Array,他们将其转换为Object[]。

https://github.com/housepower/ClickHouse-Native-JDBC/blob/master/src/test/java/com/github/housepower/jdbc/QueryComplexTypeITest.java#L120

我使用的是Clojure,不知道如何将该类强制转换为Java数组。

(vec (.getArray results "array-row"))
Unable to convert: class com.github.housepower.jdbc.ClickHouseArray to Object[]

共有2个答案

陈欣荣
2023-03-14

我相信您可以尝试迭代数组并手动合成结果:

(let [array (.getArray results "array-row")]
  (for [item array]
    (turn-item-into-a-map item)))

或者只是

(mapv turn-item-into-a-map jdbc-array)

如果您不想转换项目,请使用identity函数。

即使这样的数组不支持迭代,您仍然可以通过循环/reur中的索引访问其项目:

(let [array (get-jdbc-array...)
      size (.count array)]
  (loop [i 0
         result []]
    (if (= i size)
      result
      (let [item (.get array i)]
        (recur (inc i) (conj result item))))))
弓智明
2023-03-14

这不是Java代码在调用<code>吗。getArray方法,并将结果强制转换为Object[]array,而不是反过来?查看<code>com.github.housepower.jdbc的源代码。ClickHouseArray似乎扩展了java.sql。通过com.github.housepower.jdbc.wrapper数组。SQLArray,它不是对象[]。正确的

Clojure只需要执行运行时反射来解析对象上的方法,所以您不必担心强制转换。你得到的异常中可能有更多信息?尝试使用*e获取REPL中的最后一个异常。如果您可以发布一个更完整的测试用例,我们可能会更好地了解问题?

 类似资料:
  • 问题内容: 我是Java的新手,想知道double转换为int cast如何工作吗?我知道,只需将低32位转换为int就很容易了,但是将double(64位)转换为int(32位)呢?来自二进制的double中的那64位是Double- precision浮点格式(Mantissa),那么它如何在内部转换为int? 问题答案: 所有这些都记录在JLS的5.1.3节中。 第一步,将浮点数转换为lon

  • 问题内容: 我想在一个程序包中打印所有的类名,并在每个程序包中打印相应的属性及其数据类型。 在一个代码中,我能够以字符串形式获取类名。在另一个代码中,我可以使用以下方法获取属性及其数据类型 但是我想合并两个代码。由于在第一个代码中我以字符串的形式获得了类名,我无法使用,因为这里是类型。 因此,我需要一种将“ 类名”从类型转换为类型的方法。 我试过了,但是没有用。 问题答案: 确保是完全合格的类名,

  • 问题内容: 我有一个WSDL文件(或更确切地说,它的URL)。我需要将其转换为Java类。我还需要为其描述的Web服务提供测试。我是Web服务的新手,所以有人可以告诉我如何将WSDL转换为Java吗? 我使用Eclipse JEE Kepler。也许有一些插件可以自动执行此操作? 问题答案: 在Eclipse Kepler中,生成Web Service Client类非常容易,您可以通过执行以下步

  • 我有一个WSDL文件(或者更准确地说,它的URL)。我需要将其转换为Java类。我还需要为它描述的web服务提供测试。我是web服务新手,有人能告诉我如何将WSDL转换为Java吗? 我使用Eclipse-JEE-Kepler。也许有一些插件可以自动执行此操作?

  • 问题内容: 我有一个想要表示为C#类的复杂JSON对象。我在名为“ Form”的父类上有一个良好的开端,但是如何代表不同类型的集合(请参见下面的“ elements”对象)? 这是JSON对象: 我开始的课程看起来像这样: 如何处理“ elements”属性以获得所需的JSON输出? 我正在WCF 4.0和web.config中的以下属性一起使用:automaticFormatSelectionE