这是我用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的值但不能正常工作。
答案 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