日期:2014-05-20  浏览次数:20733 次

关于泛型List<?>能不能这样???
我这里有两个类ClassA, ClassB的某些字段及其set get方法是一样的
但又不能用继承,但在某个方法上的处理逻辑完全一样,因此我想用泛型
处理,但试验了不行
Java code

public void genericTest(List<ClassA> testList){//单个ClassA。ClassB逻辑完全和这个一样

    for(ClassA cA : testList){
        if(cA.getAge() > 60){
              //......
        }
    }
}
public void genericTest(List<?> testList){//不能生效的泛型应用
    for(Object obj : testList){
        if(obj.getAge() > 60){
              //......
        }
    }
}


请问有什么好的方法能够让List<ClassA>,List<ClassB>均在一个方法中处理么?
谢谢!

------解决方案--------------------
Java code


public static void main(String[] args) {
        List target = new ArrayList();
        target.add(new ClassA());
        target.add(new ClassB());
        Test t = new Test();
        t.genericTest(target);
    }
    
    public void genericTest(List<?> testList){
        try{
            for(Object obj : testList){
                Method m = obj.getClass().getDeclaredMethod("getAge");
                if(Integer.valueOf(m.invoke(obj).toString()) > 60){
                    System.out.println(obj.getClass().getName()+" gt");
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }