对于嵌套类中映射的某些控制器,我有一些不同的按钮布局。这是一个例子:
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;
这样的东西。我很确定这实际上是不可能的,但还有其他方法可以做到这一点吗?
答案 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;