我的应用程序包括Vehicle类和Customer类,其中我有一个接口来添加、删除和搜索每个类。
因此,我为add实现了接口,如下所示:
public void add(Object newObject, List<Object> myList);因此它接受所有的对象。然而,当我试图从我的应用程序中传递一个车辆列表时,我会收到一个错误,因为它需要一个对象列表。如何将列表转换为列表而仍然更新列表。
这是我初始化的allVehicles列表。
List<Vehicle> allVehicles = new ArrayList<Vehicle>();这是我用来添加新车辆的方法,在这里我将在allVehicles上获得错误。
addNewCycle.add(addNewCycle, allVehicles);从接口实现的车辆类的方法。
public void add(Object newObject, List<Object> myList) {
myList.add((Vehicle)newObject);
}我的问题是如何将此列表转换为对象列表并在车辆列表上更新它。
发布于 2014-04-12 22:28:45
考虑在界面上使用泛型。
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);
}
}发布于 2014-04-12 22:13:37
尝尝这个。
List<Vehicle> allVehicles = new ArrayList<Vehicle>();
// add some vehicles
List<Object> allVehicles1 = new ArrayList<Object>();
allVehicles1.addAll(allVehicles);
// now use allVehicles1 发布于 2014-04-12 22:52:41
将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);
}
}https://stackoverflow.com/questions/23036740
复制相似问题