aaa .getClass().isArray()
判断对象是否是数组

解决方案 »

  1.   

    aaa instanceof  String[]  
    bbbb instanceof int[]
    ccc instanceof Object[]
      

  2.   

    那么我要是写一个方法,返回的是数组,可能是String[]也可能是int[],那返回类型是什么??
      

  3.   

    将int改为包装类型的Integer 后 可以使用
    aaa instanceof  Object[] ,但是int[] 不可以
    数组部分,int 不会自己进行封箱,拆箱操作
      

  4.   

    不用考虑封箱操作, 任何数组都是Object类型,只不过不知道是下面的哪个子类了。
      

  5.   

     public native boolean isArray();
       * @see     java.lang.Boolean#TYPE
         * @see     java.lang.Character#TYPE
         * @see     java.lang.Byte#TYPE
         * @see     java.lang.Short#TYPE
         * @see     java.lang.Integer#TYPE
         * @see     java.lang.Long#TYPE
         * @see     java.lang.Float#TYPE
         * @see     java.lang.Double#TYPE
         * @see     java.lang.Void#TYPE
      

  6.   

    在java中除了几个基本类型,其他都是对象,我就是想知道数组是具体的哪个类。
      

  7.   


    Integer[] a = {1,2,3,4,5,6,7,8,9};
    if (a instanceof Object[]) {
    System.out.println(a.getClass());
    }通过 getClass() 方法就可以得到数组的类型啊
    不知道是否是楼主想要的结果
      

  8.   

        @Test
        public void testStrings()
        {
            String [] strs = {};
            int [] ints = {};
            Object [] objects = {};
            
            System.out.println(ints.getClass().isAssignableFrom(int [].class));
            System.out.println(strs.getClass().isAssignableFrom(String [].class));
            System.out.println(objects.getClass().isAssignableFrom(Object [].class));
        }
      

  9.   

    这个代码我也知道,这个可以说明int[].class String[].class 都是类,可是他们的共通的父类是什么呢?难道只有Object.class和Clonable.class??
      

  10.   


    public class ArrayTest { public static void main(String[] args)
    {
    String[] arr1 = {"1","2","3","4","5"};
    int[] arr2 = {1,2,3,4,5};
    Object[] arr3 = new Object[10];

    String notArr= "not array";

    //判断是否为数组
    System.out.println(arr1.getClass().isArray());
    System.out.println(arr2.getClass().isArray());
    System.out.println(arr3.getClass().isArray());
    System.out.println(notArr.getClass().isArray());

    //获取数组元素类型名称
    System.out.println(arr1.getClass().getComponentType().getName());
    System.out.println(arr2.getClass().getComponentType().getName());
    System.out.println(arr3.getClass().getComponentType().getName());
    }
    }
    输出结果为:
    true
    true
    true
    false
    java.lang.String
    int
    java.lang.Object
      

  11.   


    方法返回类型未确定的话,方法之一是可以定义返回类型为所有期待返回值类型的父类,LZ现在就是想知道这个所有期待返回值类型的父类该是哪个吧?其实可以使用泛型方法的吧:
    private <K> K methodTypeParam(){
            return (K) new int[]{1,2};
        }
        @Test
        public void testMethodTypeParam(){
            int[] i = this.methodTypeParam();
            System.out.println(i);
        }不过如果类型不对的话会抛出ClassCastException的.还有,对于混合数组.楼上的那些判断方法该如何处理:Object[]cc = {new Object(),1};
            Number[] dd = {new Long(1),1.2};
      

  12.   


    估计有不少人很少意识到可以写成:if (a.getClass() == int.class) {}if (new int[0] instanceof int[]) {}为什么不拿编译器来验证一下呢。
      

  13.   

    要看数组对象,是哪个类的实例。
    例如int[] sam = new int[10];   sam是一个Object,可是具体是哪一个类的??
      

  14.   


    估计有不少人很少意识到可以写成:if (a.getClass() == int.class) {}if (new int[0] instanceof int[]) {}为什么不拿编译器来验证一下呢。第二个是对的,第一个在Java语法中就不存在int.class.
    你这样测试能测试出什么东西??