接受两种不同类型的参数的方法
2022-09-01 03:45:43
我正在编写一个方法,该方法应接受两种类型的对象之一作为其参数,这两种对象不共享Object以外的父类型。例如,类型是梦和大蒜。您可以同时执行 和 。我想要一个方法,可以接受Dreams和Garstic作为其参数。dreams.crush()
garlic.crush()
utterlyDestroy(parameter)
utterlyDestroy(parameter) {
parameter.crush()
}
大蒜和梦都是某个库的一部分,所以让它们实现一个接口ICRable(这样我就可以写)不是一个选择。utterlyDestroy(ICrushable parameter)
我的方法体很长,所以重载它意味着重复代码。丑。我相信我可以使用反射并进行一些类黑客攻击。丑。
我尝试使用泛型,但显然我不能写这样的东西
utterlyDestroy(<T instanceof Dreams || T instanceof Garlic> parameter)
是否可以将大蒜类型化为梦想?
utterlyDestroy(Object parameter) {
((Dreams)parameter).crush()
}
不过,这仍然很丑陋。我还有其他选择,处理这种情况的首选方法是什么?