gpt4 book ai didi

java - 需要在不使用 java.util.Map 的情况下创建可序列化的键值映射,使用我的解决方法继续遇到 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 15:56:25 25 4
gpt4 key购买 nike

我正在尝试通过 OracleAS Web 服务使用第三方 Web 服务。我尝试调用的操作正在请求 java.util.Map 作为其输入参数之一。它期待这样的结构:

<in1>
<!--Zero or more repetitions:-->
<item>
<key>?</key>
<value>?</value>
</item>
</in1>

我遇到的问题是 OracleAS Web 服务使用专有 namespace 来序列化所有 java.util.Map 数据类型。 (source: table H-5) (另请参阅我关于此问题的原始 stackoverflow 问题 here )。为了解决这个问题,我需要欺骗我的 Web 服务来创建可序列化的键值项元素,而不使用 java.util.Map。

我创建了以下类,但不断遇到 NullPointerException,并且无法弄清楚有多个 <item>内部填充有键值对的元素。

任何帮助将不胜感激。谢谢!

主类

public class CreateStructure {
public static void main(String[] args) {
CustomItem inputParamMap = new CustomItem(2);
inputParamMap.setItem("HireDate", "2011-12-31", 0);
inputParamMap.setItem("status", "Hired", 1);

}
}

自定义项目类

public class CustomItem implements java.io.Serializable {
protected JAXRpcMapEntry[] item;

//Constructor
public CustomItem(int index) {
item = new JAXRpcMapEntry[index];
}

//methods
public JAXRpcMapEntry[] getItem() {
return item;
}

public void setItem(JAXRpcMapEntry[] item) {
this.item = item;
}

public void setItem(java.lang.Object key, java.lang.Object value, int index) {
this.item[index].setKey((String)key);
this.item[index].setValue((String)value);
}

public JAXRpcMapEntry[] getItem(int index) {
return this.getItem(index);
}
}

JAXRpcMapEntry 类

public class JAXRpcMapEntry
implements java.io.Serializable
{
//
// Constructors
//
public JAXRpcMapEntry() { }

public JAXRpcMapEntry(java.lang.Object p1, java.lang.Object p2) { }

//
// Fields
//
private java.lang.Object key;

private java.lang.Object value;

//
// Methods
//
public java.lang.Object getKey() {
return this.key;
}

public void setKey(java.lang.Object p1) { }

public java.lang.Object getValue() {
return this.value;
}

public void setValue(java.lang.Object p1) { }

public boolean equals(java.lang.Object p1) {
if(this.equals(p1)){
return true;
}
else
{
return false;
}
}
}

最佳答案

出现空指针异常的原因是数组中的元素未初始化。换句话说,您将键和值设置为空对象。一个快速修复方法是:

public void setItem(java.lang.Object key, java.lang.Object value, int index) {
this.item[index] = new JAXRpcMapEntry(key, value);
}

关于java - 需要在不使用 java.util.Map 的情况下创建可序列化的键值映射,使用我的解决方法继续遇到 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com