在Object []数组中,如何检查给定对象是否是某个类的实例?

时间:2012-02-26 18:36:21

标签: java arrays class object instance

我试图找出如何确定给定对象在Object []数组中实例化的类。例如:

Object[] array = new Object[]{175, "sss", new Table(), true};
Object obj = array[0]; // hmm... can this be used as an integer or maybe as a string?

甚至可能吗?

3 个答案:

答案 0 :(得分:10)

您可以致电getClass()查找特定对象的类别,也可以使用instanceof检查特定类型:

if (array[0] instanceof Integer) {
}

通常不得不做很多事情表明你的设计存在缺陷 - 你应该尝试以避免需要这样做。

答案 1 :(得分:4)

您可以尝试使用instanceof,也可以尝试getClass().isAssignableFrom(),无论您的需求是什么

答案 2 :(得分:2)

您可以测试它是否是预先知道的类的实例(并投射它):

if (obj instanceof String) {
  String s = (String) obj; //casts the obj now you know it's a String
}

我认为这不是对对象进行任何更改,而是为了揭示它的真实性质。例如,它有点像看到一个人并且不知道他们说的是什么语言 - 这个人仍然是法语或意大利语,只是你不知道哪个。演员(即(String) obj)是你告诉编译器相当于“我知道这个人说法语”

或者你可以这样得到它的类:

Class<?> clazz = obj.getClass();

可以使用Class实例进行相同的检查:

String.class.isInstance(obj) {
  String s = String.class.cast(obj);
}
相关问题