首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否允许在java枚举构造函数中使用varargs?

在Java枚举中,构造函数必须是私有的,因为枚举类型的实例应该是预定义的,不应该在运行时动态创建。因此,不能在枚举构造函数中使用可变参数(varargs)。

如果需要为枚举类型提供可变参数的功能,可以考虑使用工厂方法或构建器模式。例如:

代码语言:java
复制
public enum Color {
    RED, GREEN, BLUE;

    private List<Integer> values;

    public static Color of(Integer... values) {
        Color color = RED;
        for (Integer value : values) {
            switch (value) {
                case 1:
                    color = GREEN;
                    break;
                case 2:
                    color = BLUE;
                    break;
            }
        }
        color.values = Arrays.asList(values);
        return color;
    }

    public List<Integer> getValues() {
        return values;
    }
}

在这个例子中,我们使用了一个静态工厂方法of,它接受一个可变参数values,并根据参数的值创建一个枚举实例。然后,我们将这些值存储在枚举实例的values字段中。这样,我们就可以像使用枚举一样使用这个方法,例如:

代码语言:java
复制
Color color = Color.of(1, 2);
System.out.println(color); // 输出:BLUE
System.out.println(color.getValues()); // 输出:[1, 2]

这种方法允许我们在运行时动态创建枚举实例,同时保持了枚举类型的不可变性和线程安全性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券