【问题标题】:Casting from vector to array of object从向量转换为对象数组
【发布时间】:2013-03-19 07:43:08
【问题描述】:

实际上正在研究 XML-RPC。我试图在客户端类中执行一个返回对象数组的方法。这是我尝试在客户端类中执行它的方式。

Object[] result =  (Object[]) client.execute("getNames" , vector);

vector 表示字符串类型的向量数组,“getNames”表示默认处理程序类中的方法名称:

public Object[] getNames(String a, String b, String c) {
        Vector<String> strings = new Vector<String>();
        strings.add(a);
        strings.add(b);
        strings.add(c);
        String [] arrOfString = strings.toArray(new String[strings.size()]);
        return arrOfString ;
    }

运行时出现如下异常:

java.lang.ClassCastException: java.util.Vector cannot be cast to [Ljava.lang.Object;
    at org.apache.xmlrpc.demo.SimpleClient.<init>(SimpleClient.java:37)
    at org.apache.xmlrpc.demo.SimpleClient.main(SimpleClient.java:65)

我能做些什么来解决这个铸造问题?

【问题讨论】:

  • 您调用 ("getNames",vector) - 但您的方法具有签名 String,String,String
  • 我向 Vector 添加了 3 个字符串。

标签: java xml-rpc


【解决方案1】:

您可以在getNames 方法中简单地使用Vector 类的toArray 方法。

public Object[] getNames(String a, String b, String c) {
        Vector<String> strings = new Vector<String>();
        strings.add(a);
        strings.add(b);
        strings.add(c);
        return strings.toArray();
}

但是,如果我得到你真正想做的事情,我认为你可以简单地做类似的事情:

Object[] result =  vector.toArray();

如果vector 确实是Vector 类型。

【讨论】:

  • 我之前尝试过这个解决方案,但问题是execute方法采用followig参数(String,vector),所以它不接受vector.toArray()。
猜你喜欢
  • 2021-06-02
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 2021-05-03
相关资源
最近更新 更多