java地图。如何使用不同的值类型

时间:2016-04-03 12:14:53

标签: java types maps

来自python,我遇到了java强制一个声明类型与pythons duck-typing相比的方式的麻烦。

在具体的情况下,我试图将地图传递给将它们添加到数据库的函数。地图的键是字符串,表中的不同日期类型的值具有不同的类型。像字符串,日期,时间等

最初,我有一个Map,所以值将是所有相同的类型,我会添加contenValues如下

public long addEntry(Map<String, String>  dbEntries, String dbTable) {

    ContentValues cv = new ContentValues();

    for (String key : dbEntries.keySet()) {
        String value = dbEntries.get(key)
        cv.put(key, value);
    }

    return myDataBase.insert(dbTable, null, cv);

}

现在我有不同类型的值,所以我使用Map但是我不能再在循环中声明一个值变量 注意,我的问题与ContenValue没有关系,但问题是我通过map.get(key)从Map获取值,但是不能将它们转换为变量,因为我不知道没有什么类型有另一张地图来存储该信息

public long addEntry(Map<String, Object>  dbEntries, String dbTable) {

    ContentValues cv = new ContentValues();

    for (String key : dbEntries.keySet()) {
        // Since I have not only Strings but also other types, this does not work anymore
        // How can i declare variables when I don't know their type
        String value = dbEntries.get(key)
        cv.put(key, value);
    }

    return myDataBase.insert(dbTable, null, cv);

}

我不知道如何解决这个问题而不进行查看键的案例检查,然后根据键声明正确的类型,或者某种过滤函数,如

public String identifyType(String string) {
    return string;
}

public Date identifyType(Date date) {
    return date;
}

此外,似乎人们有时会使用自己的类来映射这些东西。但我想知道是否有更简单的方法来做到这一点。它似乎只是一个简单的问题,应该有一个简单的解决方案。

已发布类似问题,但我不明白答案。特别是user2567978的答案 Hashmap holding different data types as values for instance Integer, String and Object

编辑: 实际上,在这种情况下,我可能只是创建contentValues而不是map,并直接将它们传递给函数。这应该解决我的问题,因为contenValues似乎已经是某种地图了。但是我还是很感激,如果有人可以向我解释当我有地图时我怎么能做这个工作,因为java中的变量声明现在让我很困惑

0 个答案:

没有答案