从list-Java中选择属性值

时间:2016-01-16 12:50:55

标签: java oop

我有一个名为Car的类,此类具有以下属性:id,name,price,color和size。当我创建一个对象时,对于颜色和大小,我想要一个列表来从中选择属性值。我不希望用户写“黑”或“小”,我想在应用程序的某处找到它们。

Car c1 = new Car(1, "Super Car", 152.5, "black", "small");

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

然后,您应该拥有可供用户选择的可能值列表。下面是一个颜色示例(只是一个简单的示例,没有深入到每个场景的Java构造):

List<String> color = new ArrayList<String>();
color.add("black");
color.add("white");
// etc

Car c1 = new Car(1, "SuperCar", 152.5, color.get(userSelectedOptionIndex), "smal");

此处,userSelectedOptionIndex应该是用户在GUI中选择的选项的索引。

答案 1 :(得分:0)

1)您可以使用类通过简单的字符串来保存常量:

public final class Constants {

    private Constants() {
        // restrict instantiation
    }

    public static final String COLOR_BLACK = "black";
    public static final String COLOR_WHITE = "white";

    public static final String SIZE_SMALL = "small";
    public static final String SIZE_LARGE = "large";
}

用法:

Car c1 = new Car(1, "Super Car", 152.5, Constants.COLOR_BLACK, Constants.SIZE_SMALL)

2)另一种方法是在Constants类中使用枚举:

public final class Constants {

    private Constants() {
        // restrict instantiation
    }

    public static enum Color { White, Black };
    public static enum  Size { Small, Large };
}

用法:

Car c1 = new Car(1, "Super Car", 152.5, Constants.Color.White, Constants.Size.Small)

3)更好的方法(更多oop批准)是分别定义枚举并完全丢弃常量类

public enum Color {
    White,
    Black
}

public enum Size {
    Small,
    Large
}

用法:

Car c1 = new Car(1, "Super Car", 152.5, Color.White, Size.Small)

如果您有一个GUI元素,用户应该从中选择valuse,可以创建一个包含这些枚举值的数组或List,并填充您的GUI元素:

JavaFx 8示例:

Color[] values = Color.values();
ComboBox<Color> comboBox = new ComboBox<>();
comboBox.getItems().addAll(values);

以后获得选定的值:

Color selectedColor = comboBox.getValue();