0

Android の View のような抽象クラスがあります。それを拡張してさまざまなものを描画する多くのクラスを作成します。ここで、色が一致するように、これらすべてのクラスで同じ Paints を共有したいと考えています。

私の考えは

  • いくつかのコンテキストまたはウィンドウメトリックをすべてのコンストラクターに渡しますが、必要なのは一度だけなのでばかげています。

  • 抽象クラスに静的メソッド init() を追加することもできますが、パブリックな静的メソッドは避けようとしています。

  • スーパークラスの静的メンバーを設定し、最後にそれらをnullにするという単一の目的を持つサブクラスを作成します。これは、スーパークラスの静的なものへのリモートコントロールのようなものです。

どのようなリスクがあるのか​​ 、それを行うためのさらに簡単な方法があるかどうかはわかりません.

編集:静的メンバーを初期化するには、コンテキストが必要です(Androidに慣れていない人向け)。そのコンテキストをそのクラスに渡す必要があるため、静的ブロックなどに初期化はありません

4

2 に答える 2

0

または、静的ブロックを追加して、そこで初期化します。

public abstract class Foo {
    public static final int DEFAULT_PAINTS_SIZE = 5;
    public static Paint [] paints;

    static {
        paints = new Paints[DEFAULT_PAINTS_SIZE];
        // initialize the values somehow.
    }
}
于 2012-11-13T10:38:22.643 に答える
0

それらを直接初期化できます。

public class MyClass {
    private static MyStatic myStaticObject = new MyStatic();
}

または静的初期化ブロック内:

public class MyClass {
    private static MyStatic myStaticObject;
    static {
        //something = stuff
        myStaticObject = new MyStatic(something);
        //more stuff
    }
}
于 2012-11-13T10:39:05.667 に答える