因为List里面纺织的对象是动态的,而从List取出来的对象都是Object类型的,请问怎么判断从List中去出的真正对象,进行加载。

解决方案 »

  1.   

    我的类型是动态的 比如Employee e = (Employee)list.get(0);这里Employee是未知的,也许是Employee,也许是其它,我这个动态的东西怎么弄才好呢?我是在方法的参数中设了一个叫做objType的String类型的变量,我可以通过Class.forName(objType)得到Class,但是我怎么才能把他用到Employee e = (Employee)list.get(0)这里呢,此处的Employee应该是变的。
      

  2.   

    Object a=list.get(i);
    Test s=new Test();
    if(a instanceof Test)
      System.out.println("a 是Test的实例。。");
    else
      System.out.println("a 不是Test的实例。。");
      

  3.   

    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中读取
    进行动态判断~!
    还有楼主你下次问问题麻烦你花点分来提问
      

  4.   

    奇怪了,你说a应该是Object类型的,那么它肯定不是Test的一个对象,但是打印出来的却显示它是Test的对象。但如果Test里面如果有属性或者方法的话,那么对象a却没有它们,唉,奇怪了。
      

  5.   

    使用Java集合的“缺点”是在将对象置入一个集合时丢失了类型信息。之所以会发生这种情况,是由于当初编写集合时,那个集合的程序员根本不知道用户到底想把什么类型置入集合。若指示某个集合只允许特定的类型,会妨碍它成为一个“常规用途”的工具,为用户带来麻烦。为解决这个问题,集合实际容纳的是类型为Object的一些对象的句柄。这种类型当然代表Java中的所有对象,因为它是所有类的根。当然,也要注意这并不包括基本数据类型,因为它们并不是从“任何东西”继承来的。这是一个很好的方案,只是不适用下述场合:
    (1) 将一个对象句柄置入集合时,由于类型信息会被抛弃,所以任何类型的对象都可进入我们的集合——即便特别指示它只能容纳特定类型的对象。举个例子来说,虽然指示它只能容纳猫,但事实上任何人都可以把一条狗扔进来。
    (2) 由于类型信息不复存在,所以集合能肯定的唯一事情就是自己容纳的是指向一个对象的句柄。正式使用它之前,必须对其进行造型,使其具有正确的类型。
      

  6.   

    利用泛型类
    List<T> list=new ArrayList<T>();
                 new LinkedList<T>();
                 `````````````````````