java - 有没有办法让抽象方法具有接受不同输入的实现
问题描述
我正在尝试做类似以下的事情,我有一个抽象方法,它的实现者可以接受不同的输入对象。
public abstract void dostuff(Object o1, Object o2);
class 1
@Override
public void dostuff(Integer o1, Double o2){
logic
}
class 2
@Override
public void dostuff(Double o1, Iteger o2){
logic
}
真正的目标是拥有一个可以强制执行某些事情的抽象方法,并且一旦对象在对象内就不必强制转换,自动完成强制转换。
解决方案
在抽象类中定义类型变量:
abstract class AbstractClass<A, B> {
public abstract void dostuff(A o1, B o2);
}
然后在实现类中指定类型参数:
class Class1 extends AbstractClass<Integer, Double> {
@Override public void dostuff(Integer o1, Double o2) { /* ... */ }
}
class Class2 extends AbstractClass<Double, Iteger> {
@Override public void dostuff(Double o1, Iteger o2) { /* ... */ }
}
推荐阅读
- nativescript - 如何使用 gif 图像作为启动屏幕以及如何在 nativescript-Angular 应用程序中启动和停止 gif
- python - 递归树遍历将结果添加到python中的嵌套dict
- flutter - 如何在颤振应用程序中使用 google drive api 创建文件夹?
- angular - 如何在 quickblox 中进行 Angular 6 音频和视频通话
- ruby - Rspec 在多个它块之前在块之前运行一次
- javascript - 如何将计数器添加到具有同一类的多个元素
- mysql - MySQL 中的表锁定似乎无法处理并行请求?
- inno-setup - 为什么在 Inno Setup 6 中编译的安装程序比在 Inno Setup 5 中大 1 MB
- teradata-sql-assistant - Teradata DBS 错误,错误:(CLI2:REQEXHAUST(307):请求数据已用尽
- c# - 如何将 MetroAnimatedTabItem 的 TextAlignment 更改为居中?