Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从clojure映射创建Javabean_Java_Clojure_Javabeans - Fatal编程技术网

从clojure映射创建Javabean

从clojure映射创建Javabean,java,clojure,javabeans,Java,Clojure,Javabeans,clojure.core提供了从java对象创建clojure映射的bean,但是否存在从映射创建bean(java对象)的反向函数?具体取决于您需要什么 Java中存在Bean类型 换句话说,您的java项目中有一个Customer.class,您希望根据映射中的数据通过Clojure进行实例化和填充。这可以通过简单的方式完成 在Clojure中创建的Bean类型 您可以使用创建Javabean类型,该类型将在磁盘上生成一个.class文件,并可在Java项目中使用(与任何没有相应Java源代

clojure.core
提供了从java对象创建clojure映射的
bean
,但是否存在从映射创建bean(java对象)的反向函数?

具体取决于您需要什么

Java中存在Bean类型 换句话说,您的java项目中有一个Customer.class,您希望根据映射中的数据通过Clojure进行实例化和填充。这可以通过简单的方式完成

在Clojure中创建的Bean类型 您可以使用创建Javabean类型,该类型将在磁盘上生成一个.class文件,并可在Java项目中使用(与任何没有相应Java源代码的Java类相同)。您可以使用库来避免手动使用

在Clojure中创建的Bean类型-动态创建,不带.class文件 在本例中,您可以使用通过动态字节码创建来创建bean(只需为getter和setter创建方法并将数据从映射中移动)


您可以找到上述所有方法的示例,具体取决于您需要什么

Java中存在Bean类型 换句话说,您的java项目中有一个Customer.class,您希望根据映射中的数据通过Clojure进行实例化和填充。这可以通过简单的方式完成

在Clojure中创建的Bean类型 您可以使用创建Javabean类型,该类型将在磁盘上生成一个.class文件,并可在Java项目中使用(与任何没有相应Java源代码的Java类相同)。您可以使用库来避免手动使用

在Clojure中创建的Bean类型-动态创建,不带.class文件 在本例中,您可以使用通过动态字节码创建来创建bean(只需为getter和setter创建方法并将数据从映射中移动)


您可以找到上述所有方法的示例

有各种库执行Clojure map Java Bean翻译,包括我编写的一个名为。以下是自述文件中关于其他考虑的选项的细目以及区别:

现有的翻译解决方案存在一些功能缺陷,导致我们创建bean dip:内置的
clojure.core/bean
是单向的,使用未缓存的反射,无法配置。缓存反射可以通过,但它只是单向的。还有一种是双向的、递归的和无反射的,但它不是声明性的,因此很难维护大型翻译层

豆酱是:

  • 双向:从bean翻译到映射,然后再翻译回来
  • 声明性:只需为相应的映射指定bean类和一组键
  • 递归:当嵌套bean也定义了转换时,转换会下降到嵌套bean中
  • 无反射:宏生成类型提示代码,可在编译时通过
    *反射警告*
  • 可扩展:通过多方法实现按键转换值
支持名称空间键,使使用规范与Java API执行契约变得容易


有多种库可以执行Clojure映射Java Bean翻译,包括我编写的一个名为。以下是自述文件中关于其他考虑的选项的细目以及区别:

现有的翻译解决方案存在一些功能缺陷,导致我们创建bean dip:内置的
clojure.core/bean
是单向的,使用未缓存的反射,无法配置。缓存反射可以通过,但它只是单向的。还有一种是双向的、递归的和无反射的,但它不是声明性的,因此很难维护大型翻译层

豆酱是:

  • 双向:从bean翻译到映射,然后再翻译回来
  • 声明性:只需为相应的映射指定bean类和一组键
  • 递归:当嵌套bean也定义了转换时,转换会下降到嵌套bean中
  • 无反射:宏生成类型提示代码,可在编译时通过
    *反射警告*
  • 可扩展:通过多方法实现按键转换值
支持名称空间键,使使用规范与Java API执行契约变得容易


您的意思是从映射生成一个新的bean类吗?或者使用映射中的条目来填充现有bean类的bean?我想只返回一个对象。所以
{:foo“bar”}
变成了
o.foo==“bar”
这不是
对象,因为
java.lang.Object
没有字段。你的意思是从映射生成一个新的bean类吗?或者使用映射中的条目来填充现有bean类的bean?我想只返回一个对象。所以
{:foo“bar”}
变成
o.foo==“bar”
这不是
对象,因为
java.lang.Object
没有字段。