clojure.core
提供了bean
,它可以从java对象创建clojure映射,但是是否有一个反函数可以从映射创建bean(java对象)?
最佳答案
取决于您具体需要什么。
Java中存在Bean类型
换句话说,您的 java 项目中有(比方说)一个 Customer.class,并且您希望根据映射中的数据通过 Clojure 实例化并填充该类。这可以简单地通过 java interop 完成。 .
在 Clojure 中创建的 Bean 类型
您可以使用AOT compilation创建一个 Javabean 类型,这将在磁盘上生成一个 .class 文件,并且可以在 Java 项目中使用(与任何没有相应 Java 源的 Java 类相同)。您可以使用 clj-bean避免使用 gen-class 的库手动。
在 Clojure 中动态创建 Bean 类型,无需 .class 文件
在这种情况下,您可以使用 deftype通过动态字节码创建来创建 bean(只需为 getter 和 setter 创建方法并将数据从映射移至映射)。
您可以找到上述所有方式的示例 in this project
关于java - 从 clojure 映射创建 java bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46791682/