我有接口AAA
。我有两个类(实体):public class BBB implements AAA
个public class CCC implements AAA
个
当然,这两个类都有不同的字段,将在Service
中使用。
我有服务:
public class Service() {
public DDD returnDdd(AAA aaa){
....
return method1(aaa);
}
private DDD method1(AAA aaa){
if(aaa instanceof BBB){
return method2(aaa)
}
return method3(aaa)
}
}
字符串
如何避免instanceof?在我的Service
中,我为BBB
和CCC
提供了公共逻辑。Method1
和Method2
在此服务中使用相同的私有方法。
2条答案
按热度按时间50few1ms1#
在这种情况下,我建议在接口AAA中使用一个通用方法,如:
字符串
并使两个继承的类都实现这个方法。在这种情况下,你只需要调用一个方法,这个方法将根据确切的示例自动选择。
型
zlwx9yxi2#
好吧,这可能是非正统的,但它的工作,除非有一些其他的要求,是从您的代码失踪。我没有使用接口AAA方法的任何东西,但可以添加如果需要。
但是我真的不认为使用
instanceof
有任何问题。字符串
指纹
型
下面是我如何稍微修改你现有的代码。它将
AAA
转换为适当的子类型,这样你就可以利用每个类的属性。增强的instanceof
有助于这一点。型
以上假设
method2
和method3
可以接受子类型作为基于方法签名的参数。否则,它们可能需要在内部转换到方法以访问子类型属性。