无法覆盖对象的toString

时间:2014-02-11 07:09:14

标签: java object tostring bugzilla

这是我用Java编写并访问Bugzilla并获取对象的代码。但是我无法获得对象值。我试图覆盖toString()函数但是覆盖了一个不起作用。

package XMLRPC; 

import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.HashMap; 
import java.util.Map; 

import org.apache.commons.httpclient.HttpClient; 
import org.apache.xmlrpc.XmlRpcException; 
import org.apache.xmlrpc.client.XmlRpcClient; 
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; 
import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory; 

public class Search { 

    @Override 
    public String toString() { 
               //System.err.println ("Ojesh"); 
               return String.format("oje"+"abx"); 
    } 

    public static void main(String args[]) 
          throws MalformedURLException, XmlRpcException { 


               HttpClient httpClient = new HttpClient(); 
            XmlRpcClient rpcClient = new XmlRpcClient(); 
            XmlRpcCommonsTransportFactory factory = new XmlRpcCommonsTransportFactory(rpcClient); 
            XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); 

          factory.setHttpClient(httpClient); 
            rpcClient.setTransportFactory(factory); 
            config.setServerURL(new URL("http://abc2/bugzilla/xmlrpc.cgi")); 
            rpcClient.setConfig(config); 

            //map of the login data 
            Map loginMap = new HashMap(); 
            loginMap.put("login", "abc@bag"); 
            loginMap.put("password", "***"); 
            loginMap.put("rememberlogin", "Bugzilla_remember"); 


            // login to bugzilla 
            Object loginResult = rpcClient.execute("User.login", new Object[]{loginMap}); 
            System.err.println ("loginResult=" + loginResult); 

            // map of the bug data ok 
            Map bugMap = new HashMap(); 

            bugMap.put("id", "350"); 

            //bugMap.put("status", "NEW"); 

            // create bug 
            Object createResult = rpcClient.execute("Bug.search", new Object[]{bugMap}); 
            //createResult.toString(); 

            System.err.println("createResult =" + createResult.toString());
         }
     } 

它没有按预期返回OJEABX。而是显示错误= [Ljava.lang.Object; @ 2ee5e48a。 我哪里错了?我想打印Object的值但不能正常工作。

2 个答案:

答案 0 :(得分:1)

您确实在toSrintg()课程中创建了Search的重写版本。但你不要使用它。

尝试System.out.println(new Search().toString()));,看看您的toString()是如何运作的。我不明白哪个代码行在你看来不起作用。

有两行打印出来的东西:

System.err.println ("loginResult=" + loginResult);

System.err.println("createResult =" + createResult.toString());

第一行打印数组,因为loginResult是和数组。第二行打印由rpcClient返回的对象,实际上也是数组。因此,您会看到无法更改的数组的toString实现。

如果要创建数组的字符串表示,请使用Arrays.toString(arr)

答案 1 :(得分:1)

首先,您正在使用String.format,它用于根据名称暗示格式化字符串。见http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

你需要的是使用StringBuilder通过附加它们来创建你想要的字符串并将它赋予toString()

ex:http://docs.oracle.com/javase/tutorial/java/data/buffers.html