通用数据类型id



在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接口,并让BananaApple类实现它。

之后,您可以执行以下操作:

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);

最新更新