为什么不能转型?Vector<Food> v = new Vector<Food>();
v.add(new Food(“apple1”));
v.add(new Food(“apple2”));
.
.
.JList list = new JList(v);
Food[] foods= ((Food[])list.getSelectedValues());

解决方案 »

  1.   

    list.getSelectedValues();
    返回的是 Object[]  
    然后 取出来 一个一个的转 Food  才可以
    因为 Food[] 并不是 Object[] 的子类啊。
    所以不能转。
      

  2.   

    Food food= ((Food)list.getSelectedValue());
    为何单一就可以???
      

  3.   

    因为 Food 是 Object 的子类啊。
      

  4.   

    这个要看JList的API
    getSelectedValue这是单一的
    getSelectedValues这是数组的.Object[] o=new Object[5];
    String[]ft = (String[])o;//不可以
    Object[] tt =new String[]{"uu","yy"}; 
    String[]f = (String[])tt;//可以得到Object[]后,最一个一个转回来吧
      

  5.   

    对象可以向下转型,能通过编译,但是数组不能向下转型,编译通不过的。
    例如:
    Object o = new Object();
    String s = o;
    这个可以通过编译。
    但是下面这样就不能通过编译。
    Object[] o = new Object[]();
    String[] s = 0;
    这样就不能编译通过的