相关疑难解决方法(0)

如何迭代JSONObject?

我使用一个名为JSON的库JSONObject(如果需要,我不介意切换).

我知道如何迭代JSONArrays,但是当我从Facebook解析JSON数据时,我没有得到数组,只有a JSONObject,但我需要能够通过索引访问项目,例如JSONObject[0]获取第一个,我无法弄清楚该怎么做.

{
   "http://http://url.com/": {
      "id": "http://http://url.com//"
   },
   "http://url2.co/": {
      "id": "http://url2.com//",
      "shares": 16
   }
   ,
   "http://url3.com/": {
      "id": "http://url3.com//",
      "shares": 16
   }
}
Run Code Online (Sandbox Code Playgroud)

java json

295
推荐指数
8
解决办法
49万
查看次数

Java映射的值受键的类型参数限制

在Java中是否有一种方法可以使用映射,其中值的类型参数与键的类型参数相关联?我想写的内容如下:

public class Foo {
    // This declaration won't compile - what should it be?
    private static Map<Class<T>, T> defaultValues;

    // These two methods are just fine
    public static <T> void setDefaultValue(Class<T> clazz, T value) {
        defaultValues.put(clazz, value);
    }

    public static <T> T getDefaultValue(Class<T> clazz) {
        return defaultValues.get(clazz);
    }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,只要值的类型与Class对象的类型匹配,我就可以对Class对象存储任何默认值.我不明白为什么不允许这样做,因为我可以确保在设置/获取类型正确的值时.

编辑:感谢cletus的回答.我实际上并不需要地图本身的类型参数,因为我可以确保获取/设置值的方法的一致性,即使它意味着使用一些稍微丑陋的演员表.

java generics

36
推荐指数
2
解决办法
3万
查看次数

使用枚举键和不同值类型映射

我想在Java中定义映射,哪些键是枚举,以及值的类型取决于键.例如,假设我们有以下枚举类型:

enum KeyType {
        HEIGHT(Integer.class),
        NAME(String.class),
        WEIGHT(Double.class)
       // constructor and getter for Class field

}
Run Code Online (Sandbox Code Playgroud)

和一些地图:

Map< KeyType, Object > map = new EnumMap<>(KeyType.class);
Run Code Online (Sandbox Code Playgroud)

是否有任何简单而安全的方法来编写泛型方法:

public < T > T get(KeyType key) {
//...
}
Run Code Online (Sandbox Code Playgroud)

从该地图获取价值并将其转换为与类型对应的值?

java generics collections enums dictionary

5
推荐指数
1
解决办法
1565
查看次数

标签 统计

java ×3

generics ×2

collections ×1

dictionary ×1

enums ×1

json ×1