Java将列表<vehicle>转换为List <object> </object> </vehicle>

时间:2014-04-12 22:10:27

标签: java list object

我的应用程序由Vehicle类和Customer类组成,我有一个界面来添加删除和搜索每个。

因此我实现了我的添加界面,如下所示:

public void add(Object newObject, List<Object> myList);

因此接受所有对象。但是,当我尝试从我的应用程序传递Vehicle列表时,我收到一个错误,因为它期望一个对象列表。如何将列表转换为列表并仍然更新列表。

这是我初始化的allVehicles列表。

List<Vehicle> allVehicles = new ArrayList<Vehicle>();

这是我用来添加新车辆的方法,我在allVehicles上收到错误。

addNewCycle.add(addNewCycle, allVehicles);

从接口。

实现的Vehicle类的方法
public void add(Object newObject, List<Object> myList) {
    myList.add((Vehicle)newObject);
}

我的问题是如何将此列表转换为对象列表并在车辆列表中进行更新。

4 个答案:

答案 0 :(得分:4)

考虑将generics用于您的界面

public interface Adder<T> {
    public void add(T newObject, List<T> myList);
}

然后你可以这样做

public class Vehicle implements Adder<Vehicle> {
    @Override
    public void add(Vehicle newObject, List<Vehicle> myList) {
        myList.add(newObject);
    }
}

答案 1 :(得分:0)

试试这个。

List<Vehicle> allVehicles = new ArrayList<Vehicle>();
// add some vehicles
List<Object> allVehicles1 = new ArrayList<Object>();
allVehicles1.addAll(allVehicles);
// now use allVehicles1 

答案 2 :(得分:0)

Vehicle转换为Object实在是徒劳无功。更好的选择是重新设计界面以支持add方法的泛型:

public <T> add (T data, List<T> list);

在这种情况下,您的班级可以轻松支持:

interface Foo {
    public <T> boolean add(T data, List<T> list);
}

class Bar implements Foo {
    @Override
    public <Bar> boolean add(Bar data, List<Bar> list) {
        return list.add(data);
    }
}

public class TestBar {
    Bar bar = new Bar();
List<Bar> list = new ArrayList<>();
bar.add(bar, list);
    //prints the elements in the list
    //override toString method in Bar for a "nicer" result
System.out.println(list);
}

更好的实施方式是:

class Adder implements Foo {
    @Override
    public <T> boolean add(T data, List<T> list) {
        //totally generic
        return list.add(data);
    }
}

答案 3 :(得分:-3)

Collection默认是Objects,但是从1.5开始,Sun添加了新的机制来处理称为Generics的对象。换句话说

如果你写

ArrayList arr =new ArrayList(); 

没有泛型它会起作用。对象和这个词为&lt; 1.4 如果你有

List<Vehicle> allVehicles = new ArrayList<Vehicle>();

并且您想将其转移到ArrayList的{​​{1}}

Object