首先上代码:
import java.util.*;interface Pet{ // 定义宠物接口 public String getName() ; public String getColor() ; public int getAge() ;}class Cat implements Pet{ // 猫是宠物,实现接口 private String name ; // 宠物名字 private String color ; // 宠物颜色 private int age ; // 宠物年龄 public Cat(String name,String color,int age){ this.setName(name) ; this.setColor(color) ; this.setAge(age) ; } public void setName(String name){ this.name = name ; } public void setColor(String color){ this.color = color; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public String getColor(){ return this.color ; } public int getAge(){ return this.age ; }};class Dog implements Pet{ // 狗是宠物,实现接口 private String name ; // 宠物名字 private String color ; // 宠物颜色 private int age ; // 宠物年龄 public Dog(String name,String color,int age){ this.setName(name) ; this.setColor(color) ; this.setAge(age) ; } public void setName(String name){ this.name = name ; } public void setColor(String color){ this.color = color; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public String getColor(){ return this.color ; } public int getAge(){ return this.age ; }};class PetShop{ // 宠物商店 private Pet[] pets ; // 保存一组宠物 private int foot ; public PetShop(int len){ if(len>0){ this.pets = new Pet[len] ; // 开辟数组大小 }else{ this.pets = new Pet[1] ; // 至少开辟一个空间 } } public boolean add(Pet pet){ // 增加的是一个宠物 if(this.footsearch(String keyWord){ ArrayList pet=new ArrayList (); for(int i=0;i pet){ for(int i=0;i
问题出在后面搜索结果的遍历上面:
这种方法正确,可以取得结果
public static void print(ArrayListpet){ for(int i=0;i
而是用迭代器的这种方法却不管用
public static void print(ArrayListpet){ Iterator it1=pet.iterator(); while(it1.hasNext()) { System.out.println(it1.next().getName()); } }
报错,表示找不到getName(),但是直接输出it1.next()的结果和上面直接输出p[i]的结果是一样的,说明下面一种方法也是可以取得对象的地址的,至于为什么找不到getName()
方法,则就不明白了。我的想法是,It1已经转化成迭代器了,迭代器只能看到对象,看不到里面的东西。
因为it1.next()获得的是迭代器里面的内容。