我试图返回已提供给JSONObject类的所有名称(如在它们自己的数组中的所有键,但没有关联值)。我的代码是目前如下:当使用JSONObject的静态getNames方法时,Eclipse中的语法错误Java类
String names[] = new String[10];
names = JSONObject.getNames(jsonObj);
的方法,我试图让该阵列由是这样的:
public static String[] getNames(JSONObject jo) {
int length = jo.length();
if (length == 0) {
return null;
}
Iterator iterator = jo.keys();
String[] names = new String[length];
int i = 0;
while (iterator.hasNext()) {
names[i] = (String)iterator.next();
i += 1;
}
return names;
}
这是我得到的错误:
The method getNames(JSONObject) is undefined for the type JSONObject
但是,如果我将代码设置为故意返回并将其分配给错误类型的变量:
int inames = JSONObject.getNames(jsonObj);
突出任一的JSONObject部分或上述行原因Eclipse来显示以下错误的jsonObj参数:
Type mismatch: cannot convert from String[] to int
而突出getNames方法仍提供相同的错误之前。
我能从中得到什么? Eclipse似乎知道该方法在那里,因为它知道它的正确返回类型,但它声称该方法在类中是未定义的。
Side建议#1:名称数组不需要预先初始化。你可以直接使用String [] names = XXX.getNames(jsonObj)。或者你可以简单地不在声明中分配任何值(第1行)。 – helios 2012-07-05 11:29:09
方面建议#2:您可以使用'i ++;'递增变量。你的代码是可以的。它只是更短。 – helios 2012-07-05 11:29:44
方面建议#3:如果没有属性,为什么要返回null?我应该简单地返回一个空数组(new String [0])。你可以简单地通过删除特殊检查并让剩下的代码完成剩下的工作(数组创建为0,迭代器从不说明hasNext为真)等。 – helios 2012-07-05 11:31:04