比如,Debug时如下图展示:

Debug时含有的子元素,在代码里获取不到的问题-LMLPHP

  我想要获取的是:ansList.get(i).getComponent().getConnectorId()
  debug时明明有这个元素,但是当我写出来的时候却发现:ansList.get(88)没有getComponent()这个函数。

  这不是因为debug出错了,而是因为这里默认进行了类型转换,将ansList.get(88)转换成了WebButton类型。

  所以应当按照如下写法:

 ans.getComponent().addListener(event -> {
String btnId = ((ClickEvent) event).getButton().getConnectorId();
List<Component> ansList = (ArrayList<Component>)editGrid.getComponents();
for(int i=ansList.size()-1; i>=0; i--){
if(ansList.get(i)!=null && ansList.get(i) instanceof WebButton){
WebButton tmpBtn = (WebButton) ansList.get(i);
if(tmpBtn.getComponent().getConnectorId().equals(btnId)){
//....
}
}
}
});

  注: 父类强转成子类的时候,一定要先判断类型

05-07 15:08