0

我有一个抽象类,有点像 Android 中的视图。我创建了很多类来扩展它来绘制不同的东西。现在我希望所有这些类共享相同的油漆,以便颜色匹配等等。

我的想法是

  • 将一些上下文或窗口度量传递给每个构造函数,但这感觉很愚蠢,因为我只需要它一次。

  • 我可以向抽象类添加一个静态方法 init(),但我尽量避免使用公共静态方法。

  • 创建一个子类,其唯一目的是设置超类的静态成员并在最后使它们为空,就像对超类的静态内容的远程控制一样。

我只是不确定有什么风险,或者是否有更简单的方法来做到这一点。

编辑:要初始化静态成员,我需要一个上下文(对于那些不熟悉 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 回答