从List <object> </object>中删除非对象

时间:2014-08-04 08:26:55

标签: java list object

正如主题所述,我想从对象列表中删除非对象。

我有一个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();
    } 
}

1 个答案:

答案 0 :(得分:2)

根据定义,List<Object>仅保留Object(s)。如果那里有原始类型,则必须进行自动装箱。如果它是一个数组,那就是Object。我看到的唯一空格来自toString()的{​​{1}}方法。

修改

根据您的修改

List

不是你如何测试字符串相等性,

if(asm.getClass().getName() == "generated.ASMUO"){