有语句序列:
1. if (x instanceof Integer) { valid(); }
2. if (x instanceof Long) { valid(); }
3. if (x instanceof Double) { valid(); }
4. if (x instanceof Date) { valid(); }
5. if (x instanceof String) { valid(); }
......怎么把这些语句改写成一个循环?就象下面这样子:
for (int i=0; i<arr.length; i+++) {
   if (x instanceof arr[i]) valid();
}想了半天也不知道数组 arr 该怎么定义

解决方案 »

  1.   

    Class[] classes = new Class[] {
            Integer.class,
            Long.class,
            Double.class,
            Date.class,
            String.class
    };for (int i = 0; i < classes.length; i++) {
        if (classes[i].equals(x.getClass)) {
            valid();
        }
    }
      

  2.   

    谢谢ThirstyCrow
    你的做法很对(虽然没有用instanceof)
    如果不用instanceof运算,其实下面这种写法也是相同的效果:
    Class[] classes = new Class[] {
            Integer.class,
            Long.class,
            Double.class,
            Date.class,
            String.class
    };for (int i = 0; i < classes.length; i++) {
        if (classes[i].isInstance(x)) {
            valid();
        }
    }
      

  3.   

    classes[i].equals(x.getClass) 是比较class对象classes[i].isInstance(x) 是比较父类和子类。