public void testType() {
System.out.println("能否往List中添加一些奇怪的东西呢?");
coursesToSelect.add("我不是课程,我只是一个无辜的字符串!!");
}
在add哪里有下划线显示报错
public
List<Course> coursesToSelect;
this
.coursesToSelect =
new
ArrayList<Course>();//题主这句没加泛型,会有警告的
上面两句就规定List集合只能存放Course类型的对象。你添加String类型肯定报错啊
this.coursesToSelect = new ArrayList();
这个为什么又能 赋值成功了?已经 超出了我现在的水平
那为什么 添加的时候是按照定义的 类型来算,而不是按照赋值的类型来算呢?
public List<Course> coursesToSelect=new ArrayList();
public List<Course> coursesToSelect;
这个是个具体的 类型 而不是泛型
List<E>
他的定义才是一个泛型
特此纠正
public List<Course> coursesToSelect;
你这句话已经定义了一个泛型。
coursesToSelect 只能装 Course 而且 取值时 直接就是 Course 类型的了,不需要再强制装换了。
这是截图
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();
}
}