例如     Vector<子类> = Vector<父类>怎么转 Vector<子类> vec = (Vector<子类>)Vector<父类>   这样转不了((子类)vec.get(0)).可以转换

解决方案 »

  1.   

    Vector <子类>
    Vector <父类>
    这是没有关系的两个类,没有继承关系
      

  2.   

    类型转换中,对于<>需要视而不见,如果视而不见以后语法还成立且有意义,那就能转,否则不能转。
    对于:Vector <子类> vec = (Vector <子类>)Vector <父类>
    可以视作:Vector vec = (Vector)Vector,
    这是没有意义的,所以不能转。深层的原因可以见介绍泛型的书,如《Core Java2》第八版以后。
      

  3.   

    是啊,泛型嘛,
    A<B> 和 A<C>是两个不同的类型,没有派生关系,你是转不了的。
    你最后一个方案是可以的,但是太消耗了
    正确的方法,就是你不该用到 子类的vector。
      

  4.   

    你说的是不是这个class p{
        String p="p";
    }
    class c extends p{
        String c="c";
    }
    public class Main {    public static void main(String[] args) {
            Vector<c> cc=new Vector();
            cc.add(new c());
            Vector<p> pp=(Vector)cc;
            System.out.println(""+pp.get(0).p);
        }
    }
    /**run:
    p
    成功生成(总时间:0 秒)*/
      

  5.   

    据个例子
    String 是Object的子类
    但是 ArrayList<String> 和ArrayList<Object>就没有什么关系了
      

  6.   


    Vector<Object> vo=new Vector<Object>();
    Vector v=vo;
    Vector<String> vs=(Vector<String>)v;
    只能这样骗编译器,至于转换后会不会报错,是你的事