JAVA如何用枚举类实现泛型工厂
时间: 2024-10-21 10:06:37 浏览: 34
在Java中,枚举类可以结合泛型来实现一种简洁的工厂模式,通常用于创建一组相关的、预定义的对象。这种设计称为“枚举工厂”或“枚举生成器”。下面是一个简单的例子:
```java
public enum ColorFactory {
RED(Color.RED),
GREEN(Color.GREEN),
BLUE(Color.BLUE);
private final Color color;
ColorFactory(Color color) {
this.color = color;
}
public static <T extends Enum<T>> T create(Class<T> clazz) {
return values()[clazz.getFieldValues().indexOf(clazz.getEnumConstants()[0])];
}
}
// 定义一个Color枚举
enum Color {
RED, GREEN, BLUE;
}
// 使用工厂方法创建Color实例
Color createdColor = ColorFactory.create(Color.class);
```
在这个例子中,`ColorFactory`是一个枚举,每个枚举常量对应一个颜色。通过静态方法`create()`,我们可以传入一个`Class`类型的参数(这里是`Color.class`),它会返回相应枚举值所对应的实例。这里利用了Java泛型和反射技术。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)