在Java中,写一个枚举类,表达不同的条件
时间: 2024-03-17 17:46:33 浏览: 25
在Java中,枚举类是一种特殊的类,它的实例是有限的、固定的,每一个实例都是常量。我们可以使用枚举类来表示一组相关的常量集合,例如表示星期、月份、性别等。在这个问题中,我们可以使用枚举类来表示不同的条件。
下面是一个示例代码,演示如何使用枚举类来表示不同的条件:
```java
public enum Condition {
CONTAINS_A {
@Override
public boolean matches(String s) {
return s.contains("a");
}
},
LENGTH_GT_5 {
@Override
public boolean matches(String s) {
return s.length() > 5;
}
};
public abstract boolean matches(String s);
}
```
在这个例子中,我们定义了一个枚举类 `Condition`,其中包含两个枚举值 `CONTAINS_A` 和 `LENGTH_GT_5`,分别表示包含字母 "a" 和长度大于 5 这两种条件。每个枚举值都实现了一个抽象方法 `matches`,用于判断给定的字符串是否符合该条件。
下面是一个使用示例:
```java
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("aaa", "bbb", "cccc");
// 根据不同的条件筛选
List<String> result1 = filter(list, Condition.CONTAINS_A);
List<String> result2 = filter(list, Condition.LENGTH_GT_5);
// 输出结果
System.out.println(result1); // [aaa]
System.out.println(result2); // [cccc]
}
public static List<String> filter(List<String> list, Condition condition) {
List<String> result = new ArrayList<>();
for (String s : list) {
if (condition.matches(s)) {
result.add(s);
}
}
return result;
}
}
```
在这个例子中,我们定义了一个 `filter` 方法,接收一个列表和一个 `Condition` 枚举值作为参数,用于根据不同的条件对列表进行筛选。在 `filter` 方法内部,我们遍历列表中的每个元素,调用给定条件的 `matches` 方法进行判断,符合条件的元素会被添加到结果列表中。在 `main` 方法中,我们分别使用 `CONTAINS_A` 和 `LENGTH_GT_5` 两个枚举值来调用 `filter` 方法,并输出结果。
这样,我们就成功地使用枚举类来表示不同的条件,并将其作为方法的参数进行传递。这种做法的好处是可以让代码更加简洁、易读,避免了使用魔法值或者其他不太直观的方式来表示条件。