数组对象的校验好像不应该这样用,因为一个Object[]可以放任何数量和类型的对象,你instanceof的时候,必须校验其中每一个对象的类型,一个不满足就不行,而instanceof是一个简单的类型判别,应该还不会封装如此复杂的操作,因为三个还好办,如果是100个对象,1000个呢,直接就影响操作性能,所以从实际意义上讲也是不应该的。从此例中可看出objectarr是一个单一对象,定义时是Object[],比较时还是Object[]。
你的判别类型一种变通方法是取数组第一个对象比较,如果对象一致的话,这个对象应该就可以通过,可以代替数组对象的校验。如下:
boolean result=(objectarr[0] instanceof String);

解决方案 »

  1.   

    objectarr的类型是Object[]与String[]不兼容。所以肯定是要返回假的。
    而且instanceof判断的是对象的动态类型,你怎么能知道Object[]数组中
    的每一个引用指向的对象都是什么类型的呢?
      

  2.   

    instanceof是判断一个对象的引用(reference)
    是否某一类型。比如
    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不是任何对象的引用。