如何找出 ArrayList<Object>中每个对象的类型?

2022-08-31 11:40:39

我有一个由从数据库导入的不同元素组成的ArrayList,由字符串,数字,双精度和整数组成。有没有办法使用反射类型技术来找出每个元素所包含的每种类型的数据?

仅供参考:有这么多类型的数据的原因是,这是一段Java代码,用于使用不同的数据库实现。


答案 1

在 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);
    }
    ...
}

在爪哇:

ArrayList<Object> list = ...;
for (Object o : list) {
    if (o instanceof Integer)) {
        handleInt((Integer o).intValue());
    }
    else if (o instanceof String)) {
        handleString((String)o);
    }
    ...
}

答案 2

您可以使用该方法,也可以使用 instanceof。例如getClass()

for (Object obj : list) {
  if (obj instanceof String) {
   ...
  }
}

for (Object obj : list) {
 if (obj.getClass().equals(String.class)) {
   ...
 }
}

请注意,instanceof 将匹配子类。例如,of 是 的子类,则以下情况将为真:CA

C c = new C();
assert c instanceof A;

但是,以下内容将是错误的:

C c = new C();
assert !c.getClass().equals(A.class)