【问题标题】:Unchecked casting complain by FindBugsFindBugs 的未经检查的铸造投诉
【发布时间】:2012-07-27 16:29:48
【问题描述】:

考虑以下代码:

 public void broadcast(FacesEvent event)
    throws AbortProcessingException {

    if(!(event instanceof WrapperEvent)) {
      super.broadcast(event);
      return;
    }

    // Sets up the correct context and fire our wrapped event.
    GridWrapperEvent revent = (GridWrapperEvent)event; // FindBugs is complaining here 
    int oldRowIndex = getRowIndex();
    int oldColumnIndex = getColumnIndex();
    boolean oldClientIdRewritting = clientIdRewritting;
    setClientIdRewritting(revent.isClientIdRewritting());

    setActiveCell(revent.getRowIndex(), revent.getColumnIndex());

    FacesEvent rowEvent = revent.getFacesEvent();
    rowEvent.getComponent().broadcast(rowEvent);
    setActiveCell(oldRowIndex, oldColumnIndex);
    setClientIdRewritting(oldClientIdRewritting);
  }

FindBugs 正在抱怨注释行。有什么我可以做的吗? FindBugs 是这么说的:

未经检查/未经确认的演员表 这个演员表是未经检查的,而不是全部 被转换的类型的实例可以被转换为它正在被转换的类型 投到。确保您的程序逻辑确保此转换将 不会失败。

【问题讨论】:

    标签: java findbugs


    【解决方案1】:

    如果您知道event 将始终是GridWrapperEvent,则可以忽略该警告。否则,您可以将演员表(以及依赖于它的逻辑)包装在像

    这样的检查中
    if (event instanceof GridWrapperEvent) {
      // ...
    }
    

    事实上你已经在这样做了,但是对于(我假设)更通用的WrapperEvent 类。也许您可以调整该检查而不是添加新检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-21
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多