Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Java 生成用于在类之间转换的代码_Java_Eclipse_Type Conversion - Fatal编程技术网

Java 生成用于在类之间转换的代码

Java 生成用于在类之间转换的代码,java,eclipse,type-conversion,Java,Eclipse,Type Conversion,在我正在进行的一个项目中,我们有不同的系统。 由于这些系统应该独立发展,我们有许多通信lib来处理这些系统之间的通信。 CommunicationLib对象不用于任何系统内部,而仅用于系统之间的通信。 由于许多功能需要数据检索,我经常被迫创建与CommLib对象相等的“本地”系统对象。我使用Converter实用程序类将这些对象转换为CommLib对象 代码可能如下所示: public static CommLibObjX objXToCommLib(objX p) { CommLibO

在我正在进行的一个项目中,我们有不同的系统。 由于这些系统应该独立发展,我们有许多通信lib来处理这些系统之间的通信。 CommunicationLib对象不用于任何系统内部,而仅用于系统之间的通信。 由于许多功能需要数据检索,我经常被迫创建与CommLib对象相等的“本地”系统对象。我使用Converter实用程序类将这些对象转换为CommLib对象

代码可能如下所示:

public static CommLibObjX objXToCommLib(objX p) {
    CommLibObjX b = new CommLibObjX();
    b.setAddressName(p.getAddressName());
    b.setCityId(p.getCityId());
    b.setCountryId(p.getCountryId());
    b.setFieldx(p.getFieldx());
    b.setFieldy(p.getFieldy());
            [...]


    return b;
}

有没有办法自动生成这样的代码?使用Eclipse或其他工具?某些字段可能有不同的名称,但我想生成一个转换器方法草稿并手动编辑它

试试Apache commons beanutils

BeanUtils.copyProperties(p, b);

对于属性名称相同的所有情况,它都将属性值从源bean复制到目标bean

BeanUtils.copyProperties(p, b);

对于属性名称相同的所有情况,它都将属性值从源bean复制到目标bean

如果您觉得需要自动生成源代码,则可能是您做错了什么。我认为你需要重新审视两个“系统”之间的通信设计。这些“系统”如何沟通

  • 如果它们在不同的计算机上或处于不同的进程中,请为它们设计一个有线协议以供使用,而不是序列化对象
  • 如果它们是一起使用的类,则设计更好的实体类,这两个类都适用

如果您觉得需要自动生成源代码,那么您可能做错了什么。我认为你需要重新审视两个“系统”之间的通信设计。这些“系统”如何沟通

  • 如果它们在不同的计算机上或处于不同的进程中,请为它们设计一个有线协议以供使用,而不是序列化对象
  • 如果它们是一起使用的类,则设计更好的实体类,这两个类都适用

在大多数情况下,我同意您的观点,但以DAO和DTO为例。。。。人们有时很高兴有转换器。在大多数情况下,我同意你的观点,但以DAO和DTO为例。。。。人们有时很高兴有转换器。