class Person{
String name;
}class Man extends Person{
Man(String name){this.name=name;}

}Collection<Man> l1=new LinkedList<Man>();
l1.add(new Man("Tom"));
l1.add(new Man("John"));
        ArrayList a3=new ArrayList(l1);
请问 为什么我这样构造 a3 不行啊 非常感谢

解决方案 »

  1.   

    ArrayList<Man> a3=new ArrayList<Man>(l1);你原来的代码也没错 就是会出警告 应该是类型安全的原因你该成这样应该就没问题了
      

  2.   

    警告信息而已,楼主没有使用泛型照成的
     ArrayList<Man> a3=new ArrayList<Man>(l1);
    这样就ok的
      

  3.   


    给Lz修改了一下,ArrayList要限定类型Man,想打印出来再复写一下toString方法import java.util.ArrayList;
    import java.util.Collection;
    import java.util.LinkedList;public class CollectionTest 
    { public static void main(String[] args)
    {
    Collection<Man> l1=new LinkedList<Man>();
            l1.add(new Man("Tom"));
            l1.add(new Man("John"));
            ArrayList<Man> a3=new ArrayList<Man>(l1);
            
            for(Man m : a3)
            {
             System.out.println(m);
            } }
    }
    class Person
    {
        String name;
    }
     
    class Man extends Person
    {
            Man(String name)
            {
             this.name=name;
            }
            
            public String toString()
            {
             return name.toString();
            }
             
    }
      

  4.   

    LZ是问为什么不行。LZ想知道什么可以多写的自己想要干嘛。
      

  5.   


    import java.io.IOException;
    import java.util.*;class Person{
    String name;
    }class Man extends Person{
    Man(String name){this.name=name;}

    }public class Exercise
    {
    public static void main(String[] args) throws IOException {
    //three ways to construct an Arraylist
    //capacity refers to the length of private member elementData which is Object[]

    ArrayList<Person> a1=new ArrayList<Person>();//default initial capacity,size 0
    ArrayList<Person> a2=new ArrayList<Person>(20);//make a array of length 20 for elementData,size=0

    Collection<Man> l1=new LinkedList<Man>();
    l1.add(new Man("Tom"));
    l1.add(new Man("John"));
            ArrayList<Person> a3=new ArrayList<Person>(l1);




    }

    }
    不是警告 编译错误
    Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The constructor ArrayList<Man>(Collection<Man>) is undefined
      

  6.   


    Collection<Man> l1=new LinkedList<Man>();                             
     ArrayList<Person> a3=new ArrayList<Person>(l1);类型转换有问题吧,Man转Person?