我可以在这种情况下使用枚举吗?
Can I use Enums in this scenario?
假设有一个 Flower 摘要 class,它可以来自 SUMMER、SPRING 或 ALL_SEASONS 类型。现在像紫罗兰这样的花可以是夏季或 SPRING 季节之一。我如何在 Java 中表示它?我首先尝试使用枚举来实现它,但此时卡住了。
你的需求是实现一个有季节的花 class,
我实现了一个解决方案,不是最好的,但它揭示了基本的 OOP 继承机制和枚举,希望它能帮助你
首先,季节枚举
public enum Season{
SUMMER, SPRING, WINTER, AUTUMN;
public static List<Season> allSeason(){
return Arrays.asList(values());
}
}
接下来是摘要class花
public abstract class Flower {
abstract List<Season> seasons();
}
然后是两个 class 扩展 Flower 并且必须定义季节行为的元素
class Poppy extends Flower{
@Override
List<Season> seasons() {
return Arrays.asList(Season.SPRING, Season.SUMMER);
}
}
class Anthurium extends Flower{
@Override
List<Season> seasons() {
return Season.allSeason();
}
}
根据您 post 的要求,
你没有三个季节的要求。
相反,您需要 "flowering seasons"。
"flowering seasons" 的列表似乎是 SUMMER,
SPRING,
SUMMER_AND_SPRING,
ANY_SEASON.
考虑以下因素:
- 了解您的要求。
- 构建符合要求的解决方案。
根据您的 post,
你似乎以相反的方式执行了这些步骤
(构建解决方案然后审查需求)。
假设有一个 Flower 摘要 class,它可以来自 SUMMER、SPRING 或 ALL_SEASONS 类型。现在像紫罗兰这样的花可以是夏季或 SPRING 季节之一。我如何在 Java 中表示它?我首先尝试使用枚举来实现它,但此时卡住了。
你的需求是实现一个有季节的花 class, 我实现了一个解决方案,不是最好的,但它揭示了基本的 OOP 继承机制和枚举,希望它能帮助你
首先,季节枚举
public enum Season{
SUMMER, SPRING, WINTER, AUTUMN;
public static List<Season> allSeason(){
return Arrays.asList(values());
}
}
接下来是摘要class花
public abstract class Flower {
abstract List<Season> seasons();
}
然后是两个 class 扩展 Flower 并且必须定义季节行为的元素
class Poppy extends Flower{
@Override
List<Season> seasons() {
return Arrays.asList(Season.SPRING, Season.SUMMER);
}
}
class Anthurium extends Flower{
@Override
List<Season> seasons() {
return Season.allSeason();
}
}
根据您 post 的要求, 你没有三个季节的要求。 相反,您需要 "flowering seasons"。 "flowering seasons" 的列表似乎是 SUMMER, SPRING, SUMMER_AND_SPRING, ANY_SEASON.
考虑以下因素:
- 了解您的要求。
- 构建符合要求的解决方案。
根据您的 post, 你似乎以相反的方式执行了这些步骤 (构建解决方案然后审查需求)。