问答详情
源自:4-9 学生选课---应用泛型管理课程 Ⅰ

为什么这样会出现错误

public void testType() {

        System.out.println("能否往List中添加一些奇怪的东西呢?");

            coursesToSelect.add("我不是课程,我只是一个无辜的字符串!!");

        }

在add哪里有下划线显示报错

提问者:一个亿2333 2018-08-06 17:34

个回答

  • code_walker
    2018-08-15 11:44:02

    public List<Course> coursesToSelect;

    this.coursesToSelect = new ArrayList<Course>();//题主这句没加泛型,会有警告的

    上面两句就规定List集合只能存放Course类型的对象。你添加String类型肯定报错啊

  • 慕少8122519
    2018-08-08 08:52:47

    this.coursesToSelect = new ArrayList();

    这个为什么又能 赋值成功了?已经 超出了我现在的水平

    那为什么 添加的时候是按照定义的 类型来算,而不是按照赋值的类型来算呢? 


     public List<Course> coursesToSelect=new ArrayList();


  • 慕少8122519
    2018-08-08 08:42:53

    public List<Course> coursesToSelect;

    这个是个具体的 类型 而不是泛型 

    List<E>

    他的定义才是一个泛型

    特此纠正

  • 慕少8122519
    2018-08-08 08:40:14

    public List<Course> coursesToSelect;

    你这句话已经定义了一个泛型。 

    coursesToSelect  只能装  Course   而且 取值时 直接就是 Course 类型的了,不需要再强制装换了。


  • 一个亿2333
    2018-08-06 17:41:19

    https://img1.mukewang.com/5b6817b4000148b106180600.jpg这是截图

  • 一个亿2333
    2018-08-06 17:38:31

    package com.imooc;



    import java.util.ArrayList;

    import java.util.Arrays;

    import java.util.Iterator;

    import java.util.List;




    public class ListTest {

    public List<Course> coursesToSelect;

    public ListTest() {

    this.coursesToSelect = new ArrayList();

    }

    public void testAdd() {

    //创建一个课程对象,并通过调用add方法,添加到备选课程List中

    Course cr1 = new Course("1","数据结构");

    coursesToSelect.add(cr1);

    Course temp = (Course)coursesToSelect.get(0);

    System.out.println("添加了课程:"+temp.id+":"+ temp.name);

    Course cr2 = new Course("2","C语言");

    coursesToSelect.add(0, cr2);

    Course temp2 = (Course)coursesToSelect.get(0);

    System.out.println("添加了课程:"+temp2.id+":"+temp2.name);

    coursesToSelect.add(cr1);

    Course temp0= (Course)coursesToSelect.get(2);

    System.out.println("添加了课程:"+temp.id+":"+ temp.name);

    //Course cr3 = new Course("3","Test");

    //coursesToSelect.add(4, cr3);

    Course[] course = {new Course("3","离散数学"),new Course("4","汇编语言")};

    coursesToSelect.addAll(Arrays.asList(course));

    Course temp3 = (Course)coursesToSelect.get(2);

    Course temp4 = (Course)coursesToSelect.get(3);


    System.out.println("添加了两门课程:"+temp3.id+":"+temp3.name+";"+temp4.id+":"+temp4.name);

    Course[] course2 = {new Course("5","高等数学"),new Course("6","大学英语")};

    coursesToSelect.addAll(2,Arrays.asList(course2));

    Course temp5 = (Course)coursesToSelect.get(2);

    Course temp6 = (Course)coursesToSelect.get(3);

    System.out.println("添加了两门课程:"+temp5.id+":"+temp5.name+";"+temp6.id+":"+temp6.name);

    }

        public void testGet() {

        int size = coursesToSelect.size();

       

        System.out.println("有如下课程待选:");

        for(int i=0;i<size;i++) {

        Course cr = (Course)coursesToSelect.get(i);

        System.out.println("课程:"+cr.id+":"+cr.name);

        }

        }

            public void testIterator() {

            Iterator it = coursesToSelect.iterator();

            System.out.println("有如下课程待选(通过迭代器访问):");

            while(it.hasNext()) {

            Course cr = (Course)it.next();

            System.out.println("课程:"+cr.id+":"+cr.name);

            }

            }

        

        public void testForEach() {

        System.out.println("有如下课程待选(通过for each访问):");

        for(Object obj:coursesToSelect) {

        Course cr = (Course)obj;

        System.out.println("课程:"+cr.id+":"+cr.name);

        }

        }

            

            public void testModify() {

            coursesToSelect.set(4,new Course("7","毛概"));

            }

        

            

            public void testRemove() {

            //Course cr = (Course)coursesToSelect.get(4);

            System.out.println("即将删除4位置上和5位置上的课程!");

            Course[] courses = {(Course)coursesToSelect.get(4),(Course)coursesToSelect.get(5)};

            coursesToSelect.removeAll(Arrays.asList(courses));

            //coursesToSelect.remove(4);

            System.out.println("成功删除课程!");

            testForEach();

            }

            

            public void testType() {

            System.out.println("能否往List中添加一些奇怪的东西呢?");

                coursesToSelect.add("我不是课程,我只是一个无辜的字符串!!");

            }

            

           


    public static void main(String[] atgs) {

    ListTest lt = new ListTest();

        lt.testAdd();

    lt.testType();

        //lt.testGet();

    //lt.testIterator();

    //lt.testForEach();

    //lt.testModify();

    //lt.testForEach();

    //lt.testRemove();

    }


    }