2012-05-08 12 views
1

こんにちは、私はJavaでWebサービスを持っています。私は、クライアントが送信した文字列を変更するさまざまなメソッドを持つクラスを持っています。だから、静的メソッドを使用するかどうか

は10000のような要求の配列が来た場合、これらのメソッドは10000回と呼ばれていますので、

class Test{ 

public static String a(String z) 
{ 
// do stuff and return; 
} 


public static String b(String z) 
{ 
// do stuff and return; 
} 
} 

よう..メソッドが呼び出された文字列型の要件に基づいて、私はそれがこれらのメソッドべきかを知りたいです静的またはNOT(私はメインWebサービスクラスでこのクラスのグローバルオブジェクトを作成し、これらのメソッドを呼び出す必要があります)と取られる?

答えて

2

オブジェクト内のメソッドにアクセスできる場合、静的なメソッドを作成する必要はないと考えてください(できるだけ静的にしないでください)。コードのパフォーマンスが向上します(メモリ使用率に関して)。

+0

を行うことができますはい私は私のメインのWebサービス・クラスで、このクラスの静的オブジェクトをクレートのことを考え、そして呼び出すためにそれを使用していますこれらの方法?それは大丈夫でしょうか? – Harinder

+0

私はあなたが静的キーワードについていくらか混乱していると思います。最初のことはオブジェクト自体が静的ではないことです(オブジェクトの静的参照変数を作成することができます)。静的という用語は、クラスの参照(オブジェクトの必要なし)で直接クラスメンバーにアクセスできることを意味します。 あなたのシナリオでは、Textクラスのメソッドに直接アクセスするか、オブジェクトを作成してその参照変数を静的にしたいとします。どのオプションをお望みですか教えてください。 –

+1

私は彼が彼が書いているクラスのインスタンスを保持するために所有クラスの静的変数を作成することを意味すると考えます。おそらく、代わりにシングルトンを作成します。 – Marvo

0

スレッド間で共有されるリソースがない場合は、静的メソッドを使用することに害はありません。

0

はい、さまざまなメソッドや関数の間に相互作用がないため、静的修飾子が必要です。結果は同じメソッドで返されます。 「静的」という言葉は、そのようなクラスのオブジェクトをインスタンス化せずにアクセスできるクラス変数またはメソッドを定義することです。

クラスをインスタンス化するつもりがなく、内部でメソッドを使用する必要がある場合は、「静的」が正しい方法です。クラスコンストラクターをprivateに設定します。

2

これらのメソッドは静的な理由は何ですか?静的メソッドが必要な場合は、静的メソッドを作成します。さもなければ、設計の観点から、非静的メソッドに固執する。あなたは(あなたが」日を非表示にすることができますが)静的メソッドをオーバーライドし

そして、これがありますすることはできません。

In Java, is there any disadvantage to static methods on a class?

+1

は、2つを受け入れる場合にもあなたのansを受け入れていたでしょう..ウルの助け.. thnks .. :) – Harinder

1

方法は、すべてのケースで同じように動作している場合は、静的メソッドを使用することができますが。メソッドがパラメータとして提供された文字列に対していくつかの処理を行い、すべてのインスタンスで同じ動作をする場合は、このメソッドを使用できます。

もう一度、シンプトンを作成して&からUNIQUE_INSTANCEメソッドを呼び出すこともできます。

ような何か:

public class Test { 

    private static final Test UNIQUE_INSTANCE = new Test(); 

    private Test() { 
    } 

    public static final Test getUniqueInstance() { 

     return UNIQUE_INSTANCE; 
    } 

    public final String a(String z) { 

     // do stuff and return; 
    } 


    public final String b(String z) { 

     // do stuff and return; 
    } 
} 

次にあなたが>>

Test.getUniqueInstance().a("Hello"); 
Test.getUniqueInstance().b("World"); 
関連する問題