【发布时间】:2020-10-22 19:03:43
【问题描述】:
我有这个代码:
entity.conditions().forEach(entityCondition - > {
if (entityCondition instanceof LinkCondition) {
LinkCondition condition = (LinkCondition) entityCondition;
} else if (entityCondition instanceof OppositeLinkCondition) {
//...
} else if (entityCondition instanceof PropertyEqualCondition) {
//...
} else if (entityCondition instanceof PropertyLocalTimeRangeCondition) {
//...
}
// and 20 or so, more conditions...
});
在其中我正在寻找一种替代 IF-ELSE 语句的方法,一种更优雅的方法来处理数十个instanceof 条件。
【问题讨论】:
-
有趣的背景阅读:when polymorphism fails
-
你在每个区块里做什么?必须做
instanceof检查是一种代码味道。可能有更好的方法来做您正在做的任何事情,例如通过在每个Condition子类上调用重写的方法,但这取决于您的具体情况。 -
这能回答你的问题吗? Switch type of Object in Java
-
它可能需要完全重新设计。从泛型开始。然后编写包装类/和/或接口来整合类似的功能。
标签: java