解决方案 »

  1.   

    已解决,太捉急了~public <T> void reflect(List<T> list) {
    for (T t : list) {
    try {
    Method method = t.getClass().getMethod("getId");
    System.out.println("使用反射:" + method.invoke(t) + ":"
    + t.getClass().getSimpleName());
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
      

  2.   

    额~ 说道效率问题就很矛盾了,什么情况下使用反射哪?效率不是关键问题的情况下,比如框架?
    可以理解为一般应用开发的过程中不建议使用框架吗?
    当然不是说不要用框架!
    框架使用反射,一般是在启动的时候,只是一次性的(比如Spring的Bean加载,加载好了就放在内存里供使用)。
    业务逻辑代码不要这样用反射,因为业务代码会频繁执行。你可以设计个测试类,测试一下反射和直接调用或者条件判断方式调用,看看耗时。
      

  3.   

    Like this ?
    -----------------------
    package com..test;import java.util.ArrayList;
    import java.util.List;public class Main {    /**
         * @param args
         */
        public static void main(String[] args) {
            List<Base> arg  =new ArrayList<Base>();
            arg.add(new Base());
            arg.add(new ClassA());
            arg.add(new ClassB());
            getFlag(arg);
        }    private  static <T extends Base> void getFlag(List<T> arg){
    for(T t : arg){
        System.out.println(t.getId());
    }
        }
        
       static class  Base {
    public String getId(){
        return "Base-id";
    }
        }   static  class ClassA extends Base{
            public String getId(){
                return "A-id";
            }
      } 
       static class ClassB extends Base{
           public String getId(){
       return "B-id";
           }
       } 
        
    }
      

  4.   

    泛型的写法:
    public abstract class ClassBase{
    private int idpublic int getId(){
    return id;
    }
    }public ClassA extends ClassBase{
    }public ClassB extends ClassBase{
    }public ClassC extends ClassBase{
    }
     
    private <T extends ClassBase> void getFlag(List<T extends ClassBase> list){
           for(T t : list){
              t.getId();
           }
    }