我可以为变量分配静态嵌套类吗?

时间:2015-01-11 17:25:40

标签: java nested-class

对于嵌套类中映射的某些控制器,我有一些不同的按钮布局。这是一个例子:

public class ControllerMap{
    public static class Type1{
        public static final int BUTTON_A = 1,
                                BUTTON_B = 2;
    }

    public static class Type2{
        public static final int BUTTON_A = 2,
                                BUTTON_B = 1;
    }   
}

我想创建一个变量来引用我的代码中使用的变量。像layout = ControllerMap.Type1;这样的东西。我很确定这实际上是不可能的,但还有其他方法可以做到这一点吗?

3 个答案:

答案 0 :(得分:0)

是的,你可以从任何地方引用它,因为你的类都是公共的,类变量是公共的,如:

int button = ControllerMap.Type1.BUTTON_A;//from anywhere and is resolved at compile time

但是如果你需要它运行时,你可以注入适当的实例并创建getter / setter而不是直接暴露字段。

答案 1 :(得分:0)

我认为您正在尝试使用'静态'以OO的方式永远不会奏效。在这种情况下,您可以使用策略模式来解决您的问题,但您必须调整您的代码。

使您的类Type1和Type2实现一个接口(iController)。然后,您可以在代码中的任何位置指定:

iController controller = new Type1();  

答案 2 :(得分:0)

如果您希望将它们用作布局模板,您可以执行以下操作:

public class Template
{
    public static final Template type1 = new Template(1, 2);
    public static final Template type2 = new Template(2, 1);

    public int buttonA;
    public int buttonB;

    public Template(int buttonA, int buttonB)
    {
        this.buttonA = buttonA;
        this.buttonB = buttonB;
    }
}

然后您可以像这样使用layout变量:

public static Template layout = Template.type1;