如何在Object []数组中检查给定对象是否是某个类的实例?
我试图找出如何确定哪些类时,它在对象[]数组给定对象实例化。例如:如何在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?
这有可能吗?
您可以拨打getClass()
找出类特定对象,或者您可以使用instanceof
来检查规范IFIC类型:
if (array[0] instanceof Integer) {
}
通常不必做了很多这表明你的设计弱点,但 - 你应该尝试向需要避免这样做。
具体可能没有整数,但诠释 – 2012-02-26 18:39:59
他有对象的数组,所以你一定没有INT – UmNyobe 2012-02-26 18:45:23
@MichalBorek'instanceof'只对工作对象和'int'是不是一个对象。如果你将'int'赋值给'Object',它将被自动转换为'Integer'。 – 2012-02-26 18:48:45
您可以测试它是否是一个预先知道类的一个实例(和投它)是这样的:
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);
}
您可以尝试使用instanceof
或者你可以尝试getClass().isAssignableFrom()
,任何适合您的需求
你为什么要储存在'Object'阵列的一切吗? – 2012-02-26 18:38:35
我使用Object数组来存储调用Lua函数的参数。 – wassup 2012-02-26 18:39:58