java - 如何将同一模式但在不同代中生成的类设置为彼此的请求/响应对象而不遍历它们?

标签 java jakarta-ee jax-ws

我很难提出这个问题,这可能就是为什么我还没有找到令我满意的解决方案的原因。

进一步说明: 我有一个方案,我在 2 个不同的场合但使用相同版本的库时使用 jaxws 运行该方案。一个是我的服务的输入,另一个是输出(是的,现在相同)

我得到了相同的结构,假设这就是我得到的:

//1st generation
package package1;
public class Object1{
    int number;
    //getters and setters
}

//2nd generation
package package2;
public class Object2{
    int number;
    //getters and setters
}

我将如何将两个类中的对象设置为彼此? (对象1 = 对象2)

就我而言,这些类具有相同的名称。我以前没有使用过反射,根据我所读到的内容,由于性能要求,在这个特定的服务中使用它是一个错误。 如果有某种方法可以修改类以实现公共(public)接口(interface),那么它可能会起作用。

最佳答案

也许您正在寻找一个映射框架?

There is one here (that claims to be fast) --> https://code.google.com/p/orika/

最简单的方法是使用 BeanUtils,它使用反射:

http://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/BeanUtils.html (Look for the copyProperties method)

可以这样完成:

BeanUtils.copyProperties(dest, source);

由于性能是一个问题,我会首先选择 BeanUtils 版本并尝试测量它的速度。它可能足够快,因为这是在内存操作中。但是,如果您有一个包含许多嵌套级别的大型对象图,它可能不起作用,因为所有依赖项都位于不同的包中,因此是不同的类型。

但是,如果您可以控制 XML 模式,则可以为您正在使用的类型定义一个公共(public)命名空间,因此只会创建这些类的一个版本(它们将共享相同的包)。

关于java - 如何将同一模式但在不同代中生成的类设置为彼此的请求/响应对象而不遍历它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21625400/

相关文章:

java - 从 Windows 计算机远程在 Linux 上运行进程

Java Applet : setForeground() what exactly it does? 以及如何查看它的效果?

java - 导出 Weka 模型以在 C 或 C++ 中使用

java - 将 C++ 程序公开为 Web 服务

java - 使用注释时如何在 JAXB 解码器上设置自定义 ValidationEventHandler

java - 如何计算 JAX-WS 中的请求处理时间?

java - 服务器套接字总是向客户端返回空值,Java

tomcat - HttpSession.setMaxInactiveInterval 在 Tomcat 6 中不起作用

java - 无法从远程机器联系 EJB

java - Spring 中的表单导航困惑