Java:如何用arraylist添加并调用CLASS
public class DoctorTest{
public static void main(String[] args){
ArrayList<Doctor> dlist= new ArrayList<Doctor>();
dlist.add(new Doctor());
dlist.add(new FamilyDoctor());
for (Doctor d:dlist){
d.treatPatient();
d.giveAdvice();}}}
打错和大小写忽略不计。
我建立了一个Doctor class和一个FamilyDoctor class,其中分别有treatPatient() method and giveAdvice() method,但dlist.add(new FamilyDoctor());显示错误。
ArrayList<Doctor> 中的<Doctor>必须是一个class 吗?是不是引用了Doctor class就不能引用 FamilyDoctor class了?
for (Doctor d:dlist)是什么意思?是相当于 Doctor d=new Doctor()不过是在dlist内部调用吗? 展开
第一个问题:ArrayList<Doctor>声明了这里数组中存放的是Doctor对象,所以Family对象不能放入这个数组中。可以把FamilyDoctor改成Doctor的子类,这样就没有问题了。
第二个问题:for(Doctor d:dlist)是对数组列表进行循环遍历,它相当于:
for(int i=0;i<dlist.length;i++)
{
Doctor d = dlist[i];
...
}
例如:import java.util.ArrayList;
public class Test40023{
public static void main(String args[]){
ArrayList<Integer> a = new ArrayList<Integer>();
a.add(1);
a.add(2);
for(int i =0;i < a.size();i++){
System.out.println(a.toArray()[i]);
}
}
}
运行结果:
1
2
---------------------
toArray()方法是指将ArrayList转换为数组,如上述例子所示
补充:Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
第二个问题:for(Doctor d:dlist)是对数组列表进行循环遍历,它相当于:
for(int i=0;i<dlist.length;i++)
{
Doctor d = dlist[i];
...
}
希望对你有帮助,谢谢!
for (Doctor d:dlist)是for循环的一种写法,java5新增的语法。编译环境会自动依次取出dlist里的元素,存入d。
另外 ningtianyun
直接改为List list=new ArrayList();是不行的,这样必须强制类型转换。而前提是FamilyDoctor和Doctor是同一种类型,显然LZ是因为没继承引起了这种错误,所以直接改也解决不了问题。
List list=new ArrayList();就可以了,这样就可以存不同的对象
问题2:在有了ArrayList<Doctor> dlist= new ArrayList<Doctor>();是不能再引用FamilyDoctor class的
问题3:给你个拆开版
for(int i=0;i<dlist.size;i++){
Doctor doctor=dlist.get(i);
}
相同的意思
问题四:不是的,存到dlist中的是对象d