0

グラフィック画像を処理するクラス cShape があります。コンストラクターの開始位置を取ります。開始位置をランダムにしたいので、次のコードがあります

cBalloon(Context InContext, int w, int h) {
    // set up random postion
    Random randomGenerator = new Random();

    int sx=randomGenerator.nextInt(w);
    int sy=randomGenerator.nextInt(h);

    super( InContext,  sx,  sy,  0,0,  50,50,  "balloon", 50,50,0);
}

" " というエラーが表示Constructor class must be first in a constructorされます。これを行う方法はありますか?

4

5 に答える 5

0

ここには実行可能な実用的な解決策がいくつかありますが、このクラスのタスクに対して真に一般的なものはどれもありません。一般的な解決策は、真にランダムではないデータ ソース、つまり、同じインスタンスから両方の値を取得することが重要な場合に有効です。また、静的変数は一時的なものであっても、クリーンで簡単なスレッド セーフのために避けたほうがよいでしょう。

だからここに私の考えがあります.1つのコンストラクターが別のコンストラクターを呼び出し、データソースRandom()の一時的なインスタンスを渡します.これは、両方の値を取得するために使用されます.

public class cBalloon {

    public cBalloon(Context inContext, int w, int h) {
        this( inContext,  new Random(), w, h);
    }

    public cBalloon(Context inContext, Random randomGenerator, int w, int h) {
        super(inContext,  
              randomGenerator.nextInt(w),  
              randomGenerator.nextInt(h),  
              0,0,  50,50,  "balloon", 50,50,0);
    }
}
于 2013-06-25T18:52:33.297 に答える