微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何简化 instanceof 和三元运算符表达式

如何解决如何简化 instanceof 和三元运算符表达式

给定以下 java 代码

  private PersonEntity bezP(int id,BezEntity fEntity) {
    PersonEntity personB = fEntity.getPersonB();
    if (NP == id) {
      return personB instanceof NpEntity ? personB : null;
    }
    return personB instanceof JpEntity ? personB : null;
  }

似乎逻辑有点重复......但每次重构它的尝试都或多或少地导致了相同的复杂性......

我尝试了一些 Optionals 表达式...但是是的...我可以尝试什么?

解决方法

你可以这样做:

private PersonEntity bezP(int id,BezEntity fEntity) {
    PersonEntity personB = fEntity.getPersonB();
    return (NP == id ? NpEntity.class : JpEntity.class).isInstance(personB)
        ? personB : null;
}

它将返回语句的数量减少到 1,但我认为您的原始代码更具可读性。或者,您可以推出另一种方法:

private PersonEntity returnIfMatchingType(Class<?> type,BezEntity fEntity) {
    PersonEntity personB = fEntity.getPersonB();
    return type.isInstance(personB) ? personB : null;
}

private PersonEntity bezP(int id,BezEntity fEntity) {
    return returnIfMatchingType(
        NP == id ? NpEntity.class : JpEntity.class,fEntity
    );
}

在某种程度上,这是一个品味问题...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。