当我尝试将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;
}
答案 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
。