我有一个包装类,它包含一个list<Car>
和一些返回一个Car
对象的方法。使用泛型(?),对象或分隔类是“更好”吗?
我需要另一个类将包含list<Bike>
和相同的方法具有相同的实现,但当然不同种类的返回类型(Bike
)。
我在想,也许是为了避免重复代码和避免一个类,我可以使用list<?>
或list<Object>
,但然后我需要做一些转换时返回对象。
您认为哪一个更有效率?
我有一个包装类,它包含一个list<Car>
和一些返回一个Car
对象的方法。使用泛型(?),对象或分隔类是“更好”吗?
我需要另一个类将包含list<Bike>
和相同的方法具有相同的实现,但当然不同种类的返回类型(Bike
)。
我在想,也许是为了避免重复代码和避免一个类,我可以使用list<?>
或list<Object>
,但然后我需要做一些转换时返回对象。
您认为哪一个更有效率?
扩展我的评论,你可以有以下的结构,以充分利用泛型。
一个抽象父类
abstract class Vehicle {
...
}
一个通用的,有界列表容器类
class VehicleList<T extends Vehicle> {
private final List<T> vehicles; // Or any other way you want to hold your data
...
}
而具体的类从Vehicle
class Car extends Vehicle {
...
}
class Bike extends Vehicle {
...
}
继承之后,无论你想有一个清单Vehicle
s,您可以像使用它一样如下:
VehicleList<Car> cars = ...;
VehicleList<Bike> bikes = ...;
我同意了,但是我们可以不用抽象类来接口..所以子类可以选择扩展任何其他类 –
可能他没有建议接口,因为方法的实现对每个“孩子”类都完全相同。 – JohnLocke
为了提高效率,这并不重要。你不会注意到一个单独的演员,这是一个非常快速的操作,并且泛型已经经常在引擎盖下演员。
然而,对于这种情况
我有一个类(它还挺包装的)含有一种
list<Car>
和一些方法,返回一个Car
对象。现在我应该创建另一个类,其中包含
list<Bike>
和相同的实现方法,但当然还有不同种类的返回类型(Bike
)。
它更合理不使用List<?>
或List<Object>
而是为了让自己的类通用的,可能是有界的。
您也可以在类上使用泛型。
所以,你可以设置你的类作为
public class MyClass<T> {
private T t;
.....
这种方式,你可以写泛型方法
见https://docs.oracle.com/javase/tutorial/java/generics/types.html
这不是性能问题。我认为这是关于可读性,清晰度和理解。
您的Car
,Bike
等等,如果它们都扩展了一个通用的基类或接口(例如Vehicle
),则效果最佳。
你的类应该是这样的,如果你使用泛型用碱车辆接口:
public class VehicleRepo<T extends Vehicle> {
private List<T> vehicles;
private T vehicle;
T getVehicle() { return this.vehicle; }
}
我想,你正试图重新发明轮子。 –
为什么不让这个类具有通用性?或者使用通用基类。 –
有一个'Vehicle'类,'VehicleList'并且让'Car'和'Bike'' extends Vehicle'。那么你可以使用'VehicleList 自行车'和'VehicleList 汽车;' –
QBrute