Cat c = new Cat(); Bird b = new Bird(); myList.add(c); myList.add(b);
// 获取迭代器 // 这个表示迭代器迭代的是 Animal 类型 Iterator<Animal> it = myList.iterator(); while (it.hasNext()) { // // 使用泛型之后,每一次迭代返回的数据都是 Animal 类型 // Animal a = it.next(); // // 这里不需要强制类型转换了,直接调用 // a.move();
// 调用子类型特有的方法还是需要向下转换的 Animal a = it.next(); if (a instanceof Cat) { Cat x = (Cat) a; x.catchMouse(); } if (a instanceof Bird) { Bird y = (Bird) a; y.fly(); } }