2009-06-14 11 views
0

addおよびGetContentPaneはメソッドネストされたメソッド

このコードはメソッドのメソッドにアクセスしますか?このコードは何をしていますか?

frame.getContentPane()。add(BorderLayout.SOUTH、b);

答えて

3

メソッドはオブジェクトを返すことができます。そして、そのオブジェクトのメソッドを呼び出すことができます。

ローカル機能をサポートする言語があります。しかし、それらは外部からは見えません。

1

getContentPane()はコンテナを返し、addはコンテナクラスのメソッドの1つです。

したがって、frame.getContentPane()を実行すると、返されたContainerオブジェクトが取得され、そのオブジェクトのaddメソッドが呼び出されます。

そして
1
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(); 
4

、それは「ネストされた方法」が、他のメソッドから返されたオブジェクトに対して呼び出されている方法ではありません。 (ちょうどあなたの情報については、Javaプログラミング言語で、ネストされた方法の概念はありません。)

次の行:

f.getContentPane().add(component); 

は同等です:

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

ではなく2つのステートメントを2つの行に分ける場合、最初の例は1つの行でそれを実行します。

概念的には、これは何が起こっているかである。

  1. f.getContentPane方法はContainerを返します。
  2. addメソッドは、返されたContainerで呼び出されます。

これは、いくつかのビジュアルを持つように助けることがあります。

 
f.getContentPane().add(component); 
|________________| 
     L returns a Container object. 

[Container object].add(component); 
|________________________________| 
     L adds "component" to the Container. 

これはあまりにも置換は数学でどのように動作するかとは違っていない - 式の結果は、式を評価し続けるために使用されます。

 
(8 * 2) + 4 
|_____| 
    L 8 * 2 = 16. Let's substitute that. 

16 + 4 
|____| 
    L 16 + 4 = 20. Let's substitute that. 

20 -- Result. 
関連する問題