java – 如何使用Spring在枚举构造函数中注入参数?

我有这样的枚举:

public enum SomeEnum {
    ONE (new MyClass()),
    TWO (new MyClass());

    private final MyClass instance;

    private SomeEnum(MyClass instance) {
        this.instance = instance;
    }
}

如何从Spring上下文中将MyClass实例传递给枚举构造函数?它甚至可能吗?

我需要它,因为我在创建它时将一些参数从config(.properties文件)传递到MyClass实例.现在我在使用bean的xml文件中执行它,也许还有另一种方法?

最佳答案
你不能做这个.

在这篇关于枚举类型的official Java tutorial中,它说明了这一点

Note: The constructor for an enum type must be package-private or
private access. It automatically creates the constants that are
defined at the beginning of the enum body. You cannot invoke an enum
constructor yourself.

由于Enum应该是一组常量,因此能够创建新的常量是没有意义的,因此构造函数即使通过反射也不可用.

转载注明原文:java – 如何使用Spring在枚举构造函数中注入参数? - 代码日志