java - 使用字符串进行动态转换
java - dynamic casting using strings
考虑一个包含列的 sqlite 数据库 table DRINK
:Name
(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()
方法。
考虑一个包含列的 sqlite 数据库 table DRINK
:Name
(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()
方法。