List里面放的是对象,而这些对象是根据外面的字符串参数(类名)来确定的,这些类的属性和方法都不一样,我要用到这些类,但是List拿出来的对象都是Object类型的,用之前必须要强制的转型,但是我现在没有办法强制转型,因为我的类是不确定的,各位大侠,小弟该怎么办啊。

解决方案 »

  1.   

    即使是不确定也应该是有一定范围的~!我上次不是告诉你了吗for(int i=0;i<list.size();i++){
       if(list.get(i) instanceof Employee )
           System.out.println("a 是Employee 的实例。。do something");
       else if(list.get(i) instanceof Employee1 )
           System.out.println("a 是Employee1 的实例。。do something");
       else if(list.get(i) instanceof Employee2 )
           System.out.println("a 是Employee2 的实例。。do something");
    这里的Employee,Employee1,Employee2 就是你 说的动态的了,你可以从属性文件或xml中读取
    进行动态判断~!
      

  2.   

    谢谢zhaochunhui(没有烟抽的日子),从属性文件里读出来的东西都是字符串类型的,怎么用instanceof比较啊
      

  3.   

    假如你有2个类
    public class Employee1{}
    public class Employee2{}运用多态 写两个相同名的方法只是接收的参数不同
    public class run{
      public double calculate(Employee1 ob) { 
        //这里写要对行参Employee1对象ob操作的语句
      }   public double calculate(Employee2 ob) { 
        //这里写要对行参Employee2对象ob操作的语句
      }

    调用的时候只需 
    run dd = new run();
    dd.calulate(你要传入的对象 如Employee1的对象);
    java会根据你传入的对象选择执行相应的calulate方法
    不知道我说清楚没有 应该对你有帮助吧
      

  4.   

    用List得话自己想点办法是可以实现的。但是不知道这样的需求为什么不用“值和健”对的方式来存储你的对象 比如map。
      

  5.   

    同意楼上观点 哈希map 是处理此类问题的最佳 集合
      

  6.   

    给你个例子~!从属性文件读取~!
    属性文件
    provider.class=ch2.HelloWorldMessageProvider
    renderer.class=ch2.StandardOutMessageRenderer props= new Properties();
    try{
    props.load(new FileInputStream("ch2/conf/msf_zh_AS.properties"));
    String rendererClass=props.getProperty("renderer.class");
    String providerClass=props.getProperty("provider.class");
    renderer=(MessageRenderer)Class.forName(rendererClass).newInstance();
    provider=(MessageProvider)Class.forName(providerClass).newInstance();
    }catch(Exception e){
    System.out.println("error :"+e.getMessage());
    }
      

  7.   

    自己改一改就哦可了
    private MessageRenderer renderer=null;
    private MessageProvider provider=null;if(list.get(i) instanceof renderer)
       do something
    else (list.get(i) instanceof provider)
      do something