if (list.get(i) instanceof class1) {
                                System.out.println("class1");
                        } else if (list.get(i) instanceof class2) {
                                System.out.println("class2");
                        }你这样写当然有问题啊!改成
 if (list.get(i) instanceof class2) {
                                System.out.println("class1");
                        } else if (list.get(i) instanceof class1) {
                                System.out.println("class2");
                        }
即先判断是否是class2类型!

解决方案 »

  1.   

    同意楼上的看法
    因为在进行IF判断时,它首先看class2,如果不一样就看有没有父类,如果有就用父类来判断,这里就用class1,此时判断相同,当然就不会执行下面的代码了啊 
    不知道我的叙述是否正确!!
      

  2.   

    也就是说,它一定是class1,但不一定是class2。list.get(i) instanceof class1语句永远返回true.