2010-09-27 119 views
0

不同的命名空间我在2个不同的包中声明在Java 2个web服务深克隆对象物的一个类似的在Java中

package com.HelloWorld 

@WebService(targetNamespace="http://www.example.com/Hello") 
@SOAPBinding(parameterStyle = ParameterStyle.WRAPPED, style = Style.DOCUMENT, use = Use.LITERAL) 
{ 

    public class Hello 
    { 

    @WebMethod 
    @WebResult(name="SayHelloResult", targetNamespace="http://www.example.com/Hello") 

    Public HelloData SayHello() 
    { 

     HelloData data = new HelloData(); 
     // Some work 
     return data; 
    } 
    } 
} 


package com.HelloWorld2 

@WebService(targetNamespace="http://www.example.com/Hello2") 
@SOAPBinding(parameterStyle = ParameterStyle.WRAPPED, style = Style.DOCUMENT, use = Use.LITERAL) 
{ 

    public class Hello2 
    { 

    @WebMethod 
    @WebResult(name="SayHelloResult", targetNamespace="http://www.example.com/Hello2") 

Public HelloData SayHello2() 
    { 

     com.Hello helloObject = new com.Hello.HelloWorld(); 

     com.Hello.HelloObject helloData= helloObject.SayHello(); 

     // need to clone helloData to com.HellowWorld2 type object 

     // return a com.HelloWorld2.HelloData object 
    } 
    } 
} 

如在上面的例子中所示,为了SayHello2呼叫重定向调用另一个webmethod。虽然两个包中的HelloData都是相似的,但它们是在不同的名称空间中定义的。我怎样才能从一个对象到另一个对象进行深层复制?

回答

0

你不能深复制Foo类型的对象进式酒吧的对象。如果foo是一个超类酒吧,是一个具体的类,在技术上你可以做到这一点,但它建议您不要在Effective Java.

做到这一点