【问题标题】:nested methods嵌套方法
【发布时间】:2009-06-14 21:15:43
【问题描述】:

add 和 GetContentPane 是方法

此代码是否访问方法中的方法?这段代码有什么作用?

frame.getContentPane().add(BorderLayout.SOUTH, b);

【问题讨论】:

    标签: java methods


    【解决方案1】:

    在显示的代码中,它不是“嵌套方法”,而是在从另一个方法返回的对象上调用的方法。 (仅供参考,在 Java 编程语言中,没有嵌套方法的概念。)

    下面一行:

    f.getContentPane().add(component);
    

    相当于:

    Container c = f.getContentPane();
    c.add(component);
    

    第一个示例不是将两个语句分成两行,而是在一行中执行。

    从概念上讲,这就是正在发生的事情:

    1. f.getContentPane 方法返回一个Container
    2. 在返回的Container 上调用add 方法。

    有一些视觉效果可能会有所帮助:

    f.getContentPane().add(组件); |________________| L 返回一个 Container 对象。 [容器对象].add(component); |________________________________| l 将“组件”添加到容器中。

    这与数学中替换的工作方式并无太大不同——表达式的结果用于继续计算表达式:

    (8 * 2) + 4 |_____| L 8 * 2 = 16。让我们替换它。 16 + 4 |____| L 16 + 4 = 20。让我们替换它。 20 -- 结果。

    【讨论】:

      【解决方案2】:

      方法可以返回一个对象。您可以在该对象上调用方法。

      有些语言支持本地函数。但从外面看不到。

      【讨论】:

        【解决方案3】:

        getContentPane()返回一个Container,add是Container类的方法之一。

        因此,通过执行 frame.getContentPane(),您将获得由它返回的 Container 对象,然后为该对象调用 add 方法。

        【讨论】:

          【解决方案4】:
          public class A {
           public A f1() {
             //Do something.
             return this;
           }
           public A f2() {
             //Do something.
             return this;
           }
          

          然后:

          A var = new A();
          var.f1().f2().f1();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-12
            • 1970-01-01
            • 2017-07-29
            • 1970-01-01
            • 2013-05-19
            • 2011-01-29
            相关资源
            最近更新 更多