加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 递归查找对象,找到后返回null

发布时间:2020-12-15 05:13:30 所属栏目:Java 来源:网络整理
导读:我已经创建了一个通过名称查找jcomponents的递归方法.此方法查找正确的组件,但它返回null.我猜我没有正确处理组件的返回和返回null.我怎样才能正常工作? 编辑:改为,我从下面的评论中理解.但它不会返回组件. public Component findComponent(String str,Com
我已经创建了一个通过名称查找jcomponents的递归方法.此方法查找正确的组件,但它返回null.我猜我没有正确处理组件的返回和返回null.我怎样才能正常工作?

编辑:改为,我从下面的评论中理解.但它不会返回组件.

public Component findComponent(String str,Component tt){   

    for (Component c : ((Container) tt).getComponents()) {
        System.out.println("name: " + c.getName());
        if(c.getName().equals(str)){
            System.out.println("Found it! " + c.getName());
            return c;
        } else {
            return findComponent(str,c);
        }
    }   
    return null;
}

这将立即停止.有一个组件没有组件,所以我猜它会立即停止并返回null?

如果我从findComponent(str,c)中删除返回值;控制台给出:

name: titel
name: l
name: jpj
name: jtx
name: jpath
Found it! jpath
name: knapper
name: k1
name: n1
name: k2
name: n2
name: k3
name: n3
name: jpp
name: text
name: jpe
name: ta

title是不包含任何组件的title.这是一个新问题吗?

解决方法

你的其他块应该是:

else {
  Component sub = findComponent(str,c);
  if (sub != null) return sub;
}

否则,您将只检查您的第一个组件,只检查其第一个子组件,并且只检查第一个子组件,依此类推.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读