提问人:MWB 提问时间:10/10/2018 最后编辑:MWB 更新时间:10/25/2018 访问量:110
在 java 中使用枚举来存储一组固定的可变对象
Using Enum in java to store a fixed set of mutable objects
问:
我正在创建一个 Android 应用程序,该应用程序会吸引 .为此,我定义了要绘制到画布上的矩形屏幕区域。由于我总是绘制一组固定的屏幕区域,因此我正在考虑使用(为固定集设计)。canvas
Enum
Enum
这是我的:enum
public enum LayoutEnum {
FULLSCREEN(
new ScreenArea(
new Rect(
0,
0,
MainActivity.getDevice().getWidth(),
MainActivity.getDevice().getHeight()),
Attributes.BG_PAINT)),
LOGO_AREA(
new ScreenArea (
new Rect(
(int) (0.3 * FULLSCREEN.getScreenArea().getArea().width()),
(int) (0.3 * FULLSCREEN.getScreenArea().getArea().width()),
(int) (FULLSCREEN.getScreenArea().getArea().width() - 0.3 * FULLSCREEN.getScreenArea().getArea().width()),
(int) (0.7 * FULLSCREEN.getScreenArea().getArea().width())),
Attributes.BG_PAINT)
);
private ScreenArea screenArea;
LayoutEnum(ScreenArea screenArea) {
this.screenArea = screenArea;
}
public ScreenArea getScreenArea() {
return screenArea;
}
}
ScreenArea
是一个简单的类,它包含 a 和 a,并包含一个方法(以及一些 getter 和 setter)。Rect
Paint
draw
我的问题是:这是一个好方法吗?
一方面,我正在处理一组固定的变量。另一方面,这些变量是可变的,我可以更改它们的属性(例如,使用 getter 和 setter)。例如,我可以调用FULLSCREEN.getScreenArea().getPaint().setColor(Color.BLUE)
当你看它说它是Enum
一种特殊的数据类型,它使变量能够成为一组 预定义常量
所以我确实有一个固定的集合,它是预定义的,但不一定是恒定的。
我最初的方法是定义一个名为 包含 of 的类。在这种情况下,我使用例如将屏幕区域绘制到画布上。在这种新方法中,我使用例如.Layout
HashMap
Screenarea
Layout.get("fullscreen").draw(canvas)
FULLSCREEN.getScreenArea().draw(canvas)
我想切换的原因之一是引入类型安全解决方案。当然,也可以从 a 切换到 an 并将我的 screenareas 的名称存储在 .HashMap
EnumMap
Enum
希望你能为我指出正确的方向:一个不仅有效(上述已经有效)而且可以接受且没有异味的方向。
答: 暂无答案
评论
EnumMap