1

この質問は、プログラミングの実践が不十分であることを悲鳴を上げることになりますが、ここにパフォーマンスのリスクがあるかどうか知りたいです。

簡単にするために、1つのメソッド(コンストラクターを除く)のみがアタッチされているクラスがあるとします。

public class TestClass{

public TestClass(){

    // Set values or whatever you want in the constructor

}
public String printString(){

    System.out.println("print");
}
}

ここで、メソッドが1つしかないことを考えると、明らかにクラスを使用するときはいつでも、おそらくメソッドを呼び出したいと思うでしょうprintStringprintStringでは、コンストラクターに呼び出しを行うことには(正気以外に)ネガティブな点はありますか?testClass test = new testClass()それから電話をかけるのではなくtest.printString()

繰り返しますが、この質問はパフォーマンスに関するものであり、プログラミングの練習ではありません。

4

3 に答える 3

1

あなたができることは列挙型を使用することです

public enum TestEnum {
    TestEnum;
    public String printString() {
        System.out.println("print");
        return null;
    }
}

パフォーマンスの観点からは大きな違いはありませんが、コーディングの観点からは、毎回オブジェクトを作成する必要はありません。また、列挙型として静的ユーティリティクラスを持つことができます。

于 2012-12-05T15:14:03.353 に答える
1

printString次のような列挙型ユーティリティクラスまたはシングルトンに入れることができます

public enum TestClass {;
    public static void printString(){
        System.out.println("print");
    }
}

ただし、パフォーマンスの観点から、コンソールに行を書き込むコストと比較して、毎回新しいオブジェクトを作成することは非常に少ないです。違いは概念です。

于 2012-12-05T15:14:41.470 に答える
1

コンパイラにはコンパイルするステートメントが同じであり(ステートメントを呼び出しクラスに配置するかコンストラクタに配置するかに関係なく)、JVMには実行する正確なステートメントがあるため、意見にパフォーマンスの違いはありません。

于 2012-12-05T15:14:49.057 に答える