正如主题所述,我想从对象列表中删除非对象。
我有一个Web服务(包含一些数据的xml文件)和从XSD文件生成的类。在生成的XSD类中,有一个类ASMENYS
,它有方法getContent()
。此方法返回generated.ASMUO对象的列表。
现在的问题是,这个方法由于某种原因在对象中返回空行(空格?)。我需要遍历asmenysList
,由于空格我不得不使用if()
,这会弃用我的代码性能......任何想法?为什么会产生这些空白区域?或者也许是一些想法如何在没有迭代的情况下更好地过滤它们?
//m here is generated.ASMENYS object,.: generated.ASMENYS@10636b0
List<Object> asmenysList = ((ASMENYS) m).getContent();
System.out.println(asmenysList);
[
, generated.ASMUO@1799640,
, generated.ASMUO@b107fd,
, generated.ASMUO@10636b0,
...
, generated.ASMUO@1df00a0,
]
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"content"
})
@XmlRootElement(name = "ASMENYS")
public class ASMENYS {
@XmlElementRef(name = "ASMUO", type = ASMUO.class, required = false)
@XmlMixed
protected List<Object> content;
/**
* Gets the value of the content property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the content property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getContent().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link ASMUO }
* {@link String }
*
*
*/
public List<Object> getContent() {
if (content == null) {
content = new ArrayList<Object>();
}
return this.content;
}
}
修改
/**
* Gets the value of the asmId property.
*
*/
public int getAsmId() {
return asmId;
}
List<Object> asmenysList = ((ASMENYS) m).getContent();
for(Object asm : asmenysList){
//trying to cast empty asmenysList element, gives me an error.
//that's why I'm forced to use if() as I said before.
if(asm.getClass().getName() == "generated.ASMUO"){
int asm_id = ((ASMUO) asm).getAsmId();
}
}
答案 0 :(得分:2)
根据定义,List<Object>
仅保留Object
(s)。如果那里有原始类型,则必须进行自动装箱。如果它是一个数组,那就是Object
。我看到的唯一空格来自toString()
的{{1}}方法。
修改
根据您的修改
List
不是你如何测试字符串相等性,
if(asm.getClass().getName() == "generated.ASMUO"){