java - 如何接收共享方法java的实例化类数组
问题描述
这是我学习抽象课程的第一周,我有下一个练习:
假设我有下一个示例:我有 2 个模型,ElectricalBike 和 ManualBike。两者都具有不同实现的所有属性和方法。但是ElectricalBike也有batteryDuration
因此,我创建了一个名为 Bike 的抽象类,它具有所有共享属性和抽象方法的接口。
我还有一个容器类,让我们调用 BicycleShop,它有一个方法应该接收一组自行车,包括电动自行车和手动自行车。
我的问题是,该方法应该收到什么?因为它不会是准确的论点 Bike[]。它应该接收 2 个参数,ElectricalBike[] 和 ManualBike[]?
解决方案
您的方法应该收到一个Bike[]
参数。因为ElectricalBike
和ManualBike
延伸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
}
}
}
推荐阅读
- python - 如何使用 pip 安装 python 包?
- python - 如何在 Python 中获取 NautilusVFSFile 对象的路径?或者一种复制 NautilusVFSFile 来设置路径的方法
- python - Azure Jupyter Notebook 中的 psycopg2
- r - 滑块输入日期非数字到二进制问题
- java - Spring Boot 中是否有一个全局标志来禁用所有计划的作业?
- r - 根据变量设置水平线范围
- html - 如何不让手机上的暗模式影响我的网站?
- react-native - react-native-testing-library 与 native-testing-library 之间的区别?
- windows - 如何使用 cmd 在机器上安装所有浏览器及其安装位置和浏览器版本(包括 Chrome dev、canary..等)
- discord - 如何修复““文件”参数必须是字符串类型。接收类型对象”?