我有一个由从数据库导入的不同元素组成的ArrayList,由字符串、数字、双精度和整数组成。有没有办法使用反射类型技术来找出每个元素包含的每种类型的数据?
仅供参考:之所以有这么多类型的数据,是因为这是一段要用不同的DB实现的java代码。
发布于 2008-09-19 23:20:43
在C#中:
已根据Mike的建议进行修复
ArrayList list = ...;
// List<object> list = ...;
foreach (object o in list) {
if (o is int) {
HandleInt((int)o);
}
else if (o is string) {
HandleString((string)o);
}
...
}在Java中:
ArrayList<Object> list = ...;
for (Object o : list) {
if (o instanceof Integer)) {
handleInt((Integer o).intValue());
}
else if (o instanceof String)) {
handleString((String)o);
}
...
}发布于 2008-09-19 23:28:41
您可以使用getClass()方法,也可以使用instanceof。例如
for (Object obj : list) {
if (obj instanceof String) {
...
}
}或
for (Object obj : list) {
if (obj.getClass().equals(String.class)) {
...
}
}请注意,instanceof将匹配子类。例如,of C是A的子类,则以下条件将为真:
C c = new C();
assert c instanceof A;但是,以下内容将是错误的:
C c = new C();
assert !c.getClass().equals(A.class)发布于 2008-09-19 23:23:24
for (Object object : list) {
System.out.println(object.getClass().getName());
}https://stackoverflow.com/questions/106336
复制相似问题