转换为Object to ArrayList的JAVA不起作用

时间:2014-10-19 01:38:25

标签: java arraylist

关于问题

当我尝试将Object转换为ArrayList时,当我使用ArrayList中的方法时,如 .size(),。get()

错误归还给我:

错误:找不到符号

来源

public String parseValueParam(Object value) throws InvalidAttribute{

        if(value instanceof ArrayList){
            value =  (ArrayList) value;

            String result = ""; 

            for(int i = 0, _len = value.size(); i < _len; i ++){
                result += this.parseValueParam(value.get(i));
                if (i < _len - 1)   result += " , ";
            };
            return result;

        } else if(helper.isString(value)){

            return value.toString().replaceAll("'", "");

        } else if (helper.isInteger(value) || helper.isDouble(value)){

            return value.toString();

        } else {

            throw new InvalidAttribute("Invalid attribute type");
        }
    }

我尝试使用Object声明几个具有相同名称的方法,使用Object接受String,Int和Double,另一个只接受ArrayList。但是,当我运行我的代码时,只执行使用对象。

public String parseValueParam(ArrayList value) throws InvalidAttribute{

    String result = ""; 
    for(int i = 0, _len = value.size(); i < _len; i ++){
        result += this.parseValueParam(value.get(i));
        if (i < _len - 1)   result += " , ";
    };
    return result;
}

2 个答案:

答案 0 :(得分:3)

value被声明为Object类型 当您将其显式解析为ArrayList对象时,您仍然将其分配给value变量。 value的类型仍为Object,无法更改 使用ArrayList的另一个变量,然后使用该变量。

ArrayList value2;
if(value instanceof ArrayList){
    value2 =  (ArrayList) value;
    String result = ""; 

    for(int i = 0, _len = value2.size(); i < _len; i ++){
     ....

答案 1 :(得分:0)

问题在于,即使您在此处向ArrayList转换值:

value =  (ArrayList) value;

变量value仍然被声明为Object,所以施放对你来说没什么用。

您需要创建一个新变量,如下所示:

ArrayList list = (ArrayList) value;

然后只使用新变量list