Java:如何用arraylist添加并调用CLASS

老师给的例子是这样的:publicclassDoctorTest{publicstaticvoidmain(String[]args){ArrayList<Doctor>... 老师给的例子是这样的:
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内部调用吗?
展开
 我来答
出家人词悲
高赞答主

2015-06-13 · 大脑停止不了思考
知道大有可为答主
回答量:1.4万
采纳率:12%
帮助的人:3931万
展开全部

第一个问题: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、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

天外鸭
2010-05-06 · TA获得超过376个赞
知道小有建树答主
回答量:341
采纳率:0%
帮助的人:182万
展开全部
for (Doctor d:dlist)是一个增强的for循环,就是定义一个Doctor类型的d,然后循环遍历dlist,用那个d作为循环变量,那个ArrayList<Doctor>那个是泛型,一个类型当然就是一个类了,里面有几个规则,具体的我忘了,好像是可以引用其他的,但是必须是子类吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaohui249
2010-05-06 · 超过13用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:0
展开全部
第一个问题:ArrayList<Doctor>声明了这里数组中存放的是Doctor对象,所以Family对象不能放入这个数组中。可以把FamilyDoctor改成Doctor的子类,这样就没有问题了。
第二个问题:for(Doctor d:dlist)是对数组列表进行循环遍历,它相当于:
for(int i=0;i<dlist.length;i++)
{
Doctor d = dlist[i];
...
}
希望对你有帮助,谢谢!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f683cf5
2010-05-06 · TA获得超过369个赞
知道小有建树答主
回答量:522
采纳率:0%
帮助的人:371万
展开全部
ArrayList<Doctor>这个是泛型,会进行类型检查。这样你就只能add进Doctor类或其子类型的实例。所以你的FamilyDoctor要继承Doctor类,这样就可以了。只要是一个类型,就能通过。

for (Doctor d:dlist)是for循环的一种写法,java5新增的语法。编译环境会自动依次取出dlist里的元素,存入d。

另外 ningtianyun
直接改为List list=new ArrayList();是不行的,这样必须强制类型转换。而前提是FamilyDoctor和Doctor是同一种类型,显然LZ是因为没继承引起了这种错误,所以直接改也解决不了问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
badboy109
2010-05-06 · 超过20用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:53.7万
展开全部
问题1:是的,你可以考虑不用他
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式