在Objective-C中,我们有一个名为id的通用数据类型。我们可以创建一个类型为id的可变数组,然后我可以将不同类的对象添加到数组中,如下所示:
Bannana *banana = [[Banana alloc] init];
Apple *apple = [[Apple allloc] init];
NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject:banana];
[myArray addObject:apple];
问题:Java中"id"的等价物是什么?如何在Java中完成上述操作?谢谢
您可以创建一个Fruit
接口,并让Banana
和Apple
类实现它。
之后,您可以执行以下操作:
Fruit banana = new Banana();
Fruit apple = new Apple();
List<Fruit> myList = new ArrayList<Fruit>();
myList.add(banana);
myList.add(apple);
您也可以使用Object
类作为列表的类型,但当您将对象从列表中取出时需要小心,因为它们将是Object
类型,并且需要根据每个对象的类型进行强制转换:
List<Object> myArray = new ArrayList<Object>();
myArray.add(car);
myArray.add(banana);
for (Object o : myArray) {
if (o instanceof Car) {
Car c = (Car) o;
System.out.println("Car object found.");
// use Car object
} else if (o instanceof Banana) {
Banana b = (Banana) o;
System.out.println("Banana object found.");
// use Banana object
} else {
System.err.println("Unknown object found!");
}
}
id
有点类似于java中的Object
。Java中的所有东西(除了基元类型)都是对象。如果你只想使用可变列表来存储任何类型,你可以这样做,但不推荐:
List myArray = new ArrayList();
myArray.add(banana);
myArray.add(apple);