10

java での静的メソッドの使用について混乱しています。たとえば、メソッドが static の場合は理にかなってい main ますが、コーディング中にオブジェクトを取得した場合など

 JFrame frame= new JFrame(); 
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// here why not frame.EXIT_ON_CLOSE

使用するときも同じように

 GridBagConstraints c= new GridBagConstraints();// we have an object but still
 c.anchor = GridBagConstraints.PAGE_END; 

誰かが私に説明してもらえますか?それには何か特別な理由がありますか?

4

3 に答える 3

9

静的メソッドとフィールドは、クラスの特定のインスタンスに属する非静的オブジェクトとは対照的に、クラス内のすべてのオブジェクトに属します。あなたの例では、JFrame frame作成するオブジェクトの数に関係なく、アクセスするframe.EXIT_ON_CLOSEとまったく同じ結果が得られます。この事実を明示的に述べるために、staticメンバー (「クラス メンバー」とも呼ばれます) が使用されます。

静的メソッドにも同じロジックが適用されます。メソッドがインスタンス変数にアクセスしない場合、その結果はオブジェクトの状態に依存しなくなります。このmain(String[] args)方法はその一例です。その他の一般的な例には、さまざまなファクトリ メソッド、プリミティブの解析メソッドなどがあります。これらのメソッドはインスタンスで動作しないため、静的であると宣言されています。

于 2012-12-02T13:48:04.240 に答える
7

JFrame.EXIT_ON_CLOSEメソッドではありません。静的フィールドです。このドキュメントを参照してください。

オブジェクトではなくクラスに関連付けられた機能が必要ない場合は、静的メソッドを使用できます。

于 2012-12-02T13:45:32.553 に答える
2

- クラスのメソッドではなくJFrame.EXIT_ON_CLOSE静的変数(フィールド)です。JFrame

- staticメソッドはクラス メソッドです。たとえば、Mathクラスにはインスタンス変数がなく、そのコンストラクターはプライベートです。そのため、静的はそこで完全に機能しました...

于 2012-12-02T13:48:22.837 に答える