java - 使用字符串进行动态转换

java - dynamic casting using strings

考虑一个包含列的 sqlite 数据库 table DRINKName(String)、Description(String)、ResourceID(int)。

现在,在我得到一个 Cursor cur 之后,每次我想从特定行中得到一些东西时,我必须做类似的事情:

cur = db.query(...);
String name = cur.getString(0);
String desc = cur.getString(1);
int desc = cur.getInt(0);

但是,这个逻辑非常依赖于我对数据库 table 架构的了解,我想避免这一点。我想做的是这样的:

Object x = cur.getObject(0); //not available

但是,如标记的那样,getObject 不可用于游标

但是,我还要求在执行此操作时也保留数据类型,这意味着,1 在其 ResourceID 列中存储为 integer,不提供 1 instanceOf String=true, 它应该给出 1 instanceOf int=true.

所以,我为什么要这样做?如果我能做到这一点,那么我就可以像 for 循环一样从数据库中获取值,而不必担心模式中有什么,只提供它的长度。

有什么方法可以实现,或者至少实现类似的行为。

调用 getType() 然后使用 switch 语句调用适当的 getXxx() 方法。