java ArrayList包含不同的对象

Ser*_*rv0 7 java arraylist object

有可能创造 ArrayList<Object type car,Object type bus> list = new ArrayList<Object type car,Object type bus>();

我的意思是将不同类的对象添加到一个arraylist?

谢谢.

NPE*_*NPE 17

是的,这是可能的:

public interface IVehicle { /* declare all common methods here */ }
public class Car implements IVehicle { /* ... */ }
public class Bus implements IVehicle { /* ... */ }

List<IVehicle> vehicles = new ArrayList<IVehicle>();
Run Code Online (Sandbox Code Playgroud)

vehicles列表将接受任何实现的对象IVehicle.


Nej*_*ejc 7

是的你可以.但是你需要一个对象类型的公共类.在你的情况下,这将是Vehicle.

例如:

车辆类:

public abstract class Vehicle {
    protected String name;
}
Run Code Online (Sandbox Code Playgroud)

公交课:

public class Bus extends Vehicle {
    public Bus(String name) {
        this.name=name;
    }
}
Run Code Online (Sandbox Code Playgroud)

车类:

public class Car extends Vehicle {
    public Car(String name) {
        this.name=name;
    }
}
Run Code Online (Sandbox Code Playgroud)

主要课程:

public class Main {
    public static void main(String[] args) {
        Car car = new Car("BMW");
        Bus bus = new Bus("MAN");
        ArrayList<Vehicle> list = new ArrayList<Vehicle>();
        list.add(car);
        list.add(bus);
   }
}
Run Code Online (Sandbox Code Playgroud)


Juv*_*nis 5

利用多态性.比方说,你有一个父类VehicleBusCar.

ArrayList<Vehicle> list = new ArrayList<Vehicle>();
Run Code Online (Sandbox Code Playgroud)

您可以添加对象的类型Bus,Car或者Vehicle到这个列表,因为公交车IS-A车,车IS-A中车辆和车辆IS-A车.

从列表中检索对象并根据其类型进行操作:

Object obj = list.get(3);

if(obj instanceof Bus)
{
   Bus bus = (Bus) obj;
   bus.busMethod();
}
else if(obj instanceof Car)
{
   Car car = (Car) obj;
   car.carMethod();
}
else
{
   Vehicle vehicle = (Vehicle) obj;
   vehicle.vehicleMethod();
}
Run Code Online (Sandbox Code Playgroud)