首页 > 解决方案 > 如何接收共享方法java的实例化类数组

问题描述

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

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

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

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

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

标签: javaarraysclassargumentsabstract-class

解决方案


您的方法应该收到一个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
     } 
   }
 }

推荐阅读