【问题标题】:how to receive an array of instancied classes that share methods java如何接收共享方法java的实例化类数组
【发布时间】:2021-07-13 01:27:39
【问题描述】:

这是我学习抽象课程的第一周,我有下一个练习:

假设我有下一个示例:我有 2 个模型,ElectricalBike 和 ManualBike。两者都具有不同实现的所有属性和方法。但是ElectricalBike也有batteryDuration

因此,我创建了一个名为 Bike 的抽象类,它具有所有共享属性和抽象方法的接口。

我还有一个容器类,让我们调用 BicycleShop,它有一个方法应该接收一个自行车数组,包括电动自行车和手动自行车。

我的问题是,该方法应该接收什么?因为它不会是准确的论点 Bike[]。它应该接收 2 个参数,ElectricalBike[] 和 ManualBike[]?

【问题讨论】:

  • Bike[] 有什么问题?然后可以将Bike的所有子类型(ElectricBikeManualBike)放入数组中。
  • @MadyDaby 因此,如果我以 2 个 ElectricBike 和 2 个 ManualBike 为例并将它们推入阵列中,不会有问题吗?因为我当然不能实例化像 Bike 这样的抽象类
  • 应该没问题

标签: java arrays class arguments abstract-class


【解决方案1】:

您的方法应该收到一个Bike[] 参数。因为ElectricalBikeManualBike 扩展了Bike。所以他们都是Bike

然后在你的方法中你可以转换你的论点Bike[]

public void yourMethod(final Bike[] bikes) {
   if(bikes.length > 0) {
     if(bikes[0] instanceof ManualBike) {
        final ManualBike manualBikes = Arrays.copyOf(bikes, bikes.length, ManualBike.class);
        // do something
    } else if(bikes[0] instanceof ElectricalBike) {
        final ElectricalBike elecBikes = Arrays.copyOf(bikes, bikes.length, ElectricalBike.class);
        // do something
     } 
   }
 }

【讨论】:

    猜你喜欢
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多