在这种情况下可以使用枚举吗?

时间:2019-09-30 13:35:37

标签: java enums enumeration

假设有一个Flower抽象类,它可以来自SUMMER,SPRING或ALL_SEASONS类型。现在,像紫罗兰这样的花朵可以成为夏季或春季两个季节。如何用Java表示呢?我首先尝试使用Enums来实现它,但此刻陷入困境。

2 个答案:

答案 0 :(得分:2)

根据您对帖子的要求, 您不需要三个季节。 相反,您需要“开花季节”。 “开花季节”列表似乎是“夏天”, 弹簧, SUMMER_AND_SPRING, ANY_SEASON。

请考虑以下内容:

  1. 了解您的要求。
  2. 构建符合要求的解决方案。

根据您的信息, 您似乎反向执行了这些步骤 (先建立解决方案,然后查看需求)。

答案 1 :(得分:0)

您的需要是实施一个有季节的Flower类, 我实施了一个解决方案,虽然不是最好的,但是它揭示了OOP继承的基本机制和枚举,希望它会为您提供帮助

首先,季节枚举

 public enum Season{
        SUMMER, SPRING, WINTER, AUTUMN;

        public static List<Season> allSeason(){
            return Arrays.asList(values());
        }
    }

下一个抽象类Flower

public abstract class Flower {
    abstract List<Season> seasons();
}

然后是两个扩展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();
    }
}