java ArrayList包含不同的对象
是否可以创建java ArrayList包含不同的对象,java,object,arraylist,Java,Object,Arraylist,是否可以创建 ArrayList list=new ArrayList() 我的意思是将不同类的对象添加到一个arraylist 谢谢。是的,你可以。但是您需要一个通用类来定义对象类型。在您的情况下,这将是车辆 例如: 车辆类别: public abstract class Vehicle { protected String name; } 巴士等级: public class Bus extends Vehicle { public Bus(String name) {
ArrayList list=new ArrayList()
我的意思是将不同类的对象添加到一个arraylist
谢谢。是的,你可以。但是您需要一个通用类来定义对象类型。在您的情况下,这将是
车辆
例如:
车辆类别:
public abstract class Vehicle {
protected String name;
}
巴士等级:
public class Bus extends Vehicle {
public Bus(String name) {
this.name=name;
}
}
车辆等级:
public class Car extends Vehicle {
public Car(String name) {
this.name=name;
}
}
主要类别:
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);
}
}
公共类主{
公共静态void main(字符串[]args){
汽车=新车(“宝马”);
公共汽车=新公共汽车(“人”);
ArrayList=新建ArrayList();
列表。添加(car);
列表。添加(总线);
}
}
是的,有可能:
public interface IVehicle { /* declare all common methods here */ }
public class Car implements IVehicle { /* ... */ }
public class Bus implements IVehicle { /* ... */ }
List<IVehicle> vehicles = new ArrayList<IVehicle>();
public interface IVehile{/*在此声明所有常用方法*/}
公共类Car实现IVehile{/*…*/}
公共类总线实现IVehile{/*…*/}
列出车辆=新的ArrayList();
vehicles
列表将接受实现i车辆的任何对象
使用多态性。假设您有一个用于Bus
和Car
的父类Vehicle
ArrayList<Vehicle> list = new ArrayList<Vehicle>();
不幸的是,您不能指定多个类型参数,因此您必须为您的类型找到一个公共超类并使用它。一种极端情况是只使用
对象
:
List<Object> list = new ArrayList<Object>();
创建一个类并使用多态性。然后要在单击中拾取对象,请使用instanceof.这正是我现在要做的,但是我如何从扩展类中访问方法?这是否正确?第二个数组值是objectType,所以我这样做。”ArrayList items=新建ArrayList();while((strLine=br.readLine())!=null){String s[]=strLine.split(\\\\);if(s[2].equals(“奥迪”){Audi myAud=new Audi(s[0],s[1],s[2],s[4]);items.add(myAud);}else if(s[2].equals(“宝马”){BMW myBmw=new BMW(s[0],s[1],s[2],s[2],s[4]);items.add(myAud);,els[2],els[2]如果(s[2]等于新欧宝[2],s[1],myopel]s[3],s[3]);items],s[4]);items.add(myOpe);}否则如果(s[2].equals(“Mazda”){Mazda myMaz=new Mazda(s[0],s[1],s[2],s[3]);items.add(myMaz);}好的,当我从文件中读取行时,我不知道读取了什么对象。我有字符串数组,我需要根据文件中的属性将其分配给正确的对象。这无法通过此实现直接解决。您可以在
Vehicle
类中使用名为createVehicle
的函数,该函数将尝试解析输入字符串,并创建适当的对象。例如,该功能可以查找车辆制造商-如果它是宝马
,则这是汽车
,在其他情况下,它是公共汽车
。这是否正确?第二个数组值是objectType,所以我这样做。”ArrayList items=新建ArrayList();while((strLine=br.readLine())!=null){String s[]=strLine.split(\\\\);if(s[2].equals(“奥迪”){Audi myAud=new Audi(s[0],s[1],s[2],s[4]);items.add(myAud);}else if(s[2].equals(“宝马”){BMW myBmw=new BMW(s[0],s[1],s[2],s[2],s[4]);items.add(myAud);,els[2],els[2]如果(s[2]等于新欧宝[2],s[1],myopel]s[3],s[3]);items],s[4]);items.add(myOpe);}else如果(s[2].equals(“马自达”){Mazda myMaz=新马自达(s[0],s[1],s[2],s[3]);items.add(myMaz);}是的,在那些行中。但是在这里你需要对所有的汽车制造商进行分类,这需要很多时间,而且它不是模块化的。所以我会坚持使用表示法,这里有classCar
。然后在构造一个对象时,您可以调用新车(s[0],s[1],s[2],s[3],s[4])
,其中s[2]
显然是汽车品牌。有关这一点,请参阅。您需要实现自定义比较器
。谢谢,但在我的情况下,我无法使用此解决方案,因为我从数组中读取属性,并且不知道从文件中获取什么对象。
List<Object> list = new ArrayList<Object>();
Car c = (Car)list.get(0);