我试图找出如何确定给定对象在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?
甚至可能吗?
答案 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);
}