数组对象的校验好像不应该这样用,因为一个Object[]可以放任何数量和类型的对象,你instanceof的时候,必须校验其中每一个对象的类型,一个不满足就不行,而instanceof是一个简单的类型判别,应该还不会封装如此复杂的操作,因为三个还好办,如果是100个对象,1000个呢,直接就影响操作性能,所以从实际意义上讲也是不应该的。从此例中可看出objectarr是一个单一对象,定义时是Object[],比较时还是Object[]。
你的判别类型一种变通方法是取数组第一个对象比较,如果对象一致的话,这个对象应该就可以通过,可以代替数组对象的校验。如下:
boolean result=(objectarr[0] instanceof String);
你的判别类型一种变通方法是取数组第一个对象比较,如果对象一致的话,这个对象应该就可以通过,可以代替数组对象的校验。如下:
boolean result=(objectarr[0] instanceof String);
而且instanceof判断的是对象的动态类型,你怎么能知道Object[]数组中
的每一个引用指向的对象都是什么类型的呢?
是否某一类型。比如
Integer i = new Integer(0);
System.out.println( i instanceof Integer);
返回为true,因为i是一个Integer的对象的引用。
Integer i = new Integer(0);
System.out.println( i instanceof Long);
则返回为false, 因为i不是一个Long的对象的引用。
但是,
Integer i = null;
System.out.println( i instanceof Integer);
返回值为false. 这是因为i的值为null, null不是任何对象的引用。