gpt4 book ai didi

java - 避免显式强制转换的最佳方法

转载 作者:行者123 更新时间:2023-12-02 09:06:00 25 4
gpt4 key购买 nike

我有一个如下所示的类层次结构

Vehicle
|_ TransaportationVehicle has method getLoadCapacity
|_ PassengerVehicle has method getPassengerCapacity

我还有一个类Booking,它引用了Vehicle

现在,每当我必须在 vehicle 引用上调用 getPassengerCapacitygetLoadCapacity 时,我都需要将车辆类型转换为其具体实现,例如 ((PassengerVehicle)vehicle).getPassengerCapacity() 并且此类调用跨越项目中的多个部分。那么有什么方法可以避免这些类型的转换,并且我的代码看起来又漂亮又干净呢?

注意:这些不是实际的类,我以它们为例来演示当前的问题。

最佳答案

显然,在预订 Vehicle 时,您需要在某些时候区分它是 TransportationVehicle 还是 PassengerVehicle,因为两者具有不同的属性。

最简单的方法是启动两种不同的预订流程:一种适用于可以运输 cargo 的车辆,另一种适用于可以运输乘客的车辆。至于如何区分这两种类型的车辆:可以在Vehicle中添加canTransportPassengers()canTransportGoods()方法,子类将然后重写这些方法以在适当的情况下返回 true。此外,通过这种方式,可以运输两者的车辆成为可能,例如火车。

关于java - 避免显式强制转换的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34152303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com