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.
是的你可以.但是你需要一个对象类型的公共类.在你的情况下,这将是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)
利用多态性.比方说,你有一个父类Vehicle的Bus和Car.
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)