首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何找出ArrayList<Object>中每个对象的类型?

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

Stack Overflow用户
提问于 2008-09-19 23:17:12
回答 12查看 267.8K关注 0票数 87

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

仅供参考:之所以有这么多类型的数据,是因为这是一段要用不同的DB实现的java代码。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2008-09-19 23:20:43

在C#中:

已根据Mike的建议进行修复

代码语言:javascript
运行
复制
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中:

代码语言:javascript
运行
复制
ArrayList<Object> list = ...;
for (Object o : list) {
    if (o instanceof Integer)) {
        handleInt((Integer o).intValue());
    }
    else if (o instanceof String)) {
        handleString((String)o);
    }
    ...
}
票数 101
EN

Stack Overflow用户

发布于 2008-09-19 23:28:41

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

代码语言:javascript
运行
复制
for (Object obj : list) {
  if (obj instanceof String) {
   ...
  }
}

代码语言:javascript
运行
复制
for (Object obj : list) {
 if (obj.getClass().equals(String.class)) {
   ...
 }
}

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

代码语言:javascript
运行
复制
C c = new C();
assert c instanceof A;

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

代码语言:javascript
运行
复制
C c = new C();
assert !c.getClass().equals(A.class)
票数 54
EN

Stack Overflow用户

发布于 2008-09-19 23:23:24

代码语言:javascript
运行
复制
for (Object object : list) {
    System.out.println(object.getClass().getName());
}
票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/106336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档