【发布时间】:2015-08-06 20:21:46
【问题描述】:
我试图提供一个机会,可以在给定的注入点和字符串值(在 Produces 方法中获得)注入任意枚举
任意意味着如果我有 enum My 和 enum Your 我想用相同的生产者方法注入它们或任何其他。
所以我尝试了几种方法: 1.
@Produces
@MyConfigAnnotation
Enum getArbitraryEnum(InjectionPoint point) {
...
// get string representation,
// instantiate enum using point
return Enum.valueOf((Class<Enum>)injectionPoint.getAnnotated().getClass(), enumValue);
}
2。我将返回类型更改为 Object。
在这两种情况下,我都会收到下一个异常 引起:org.jboss.weld.exceptions.DeploymentException:WELD-001408:在注入点 [BackedAnnotatedField] @Inject @X pathToMyField.testEnum2 带有限定符 @X 的类型 TestEnum 的依赖关系不满足
那么有没有办法创建一个能够产生任意枚举的 Produces 方法。
【问题讨论】:
-
你能提供更多你的生产者方法吗?你在运行什么容器?
-
@JohnAment 我已经添加了我试图实例化枚举的方式。但这并不重要,因为该应用程序似乎没有进入方法。关于容器,我使用的是 Jboss Weld,还是您的意思有所不同?
标签: java dependency-injection cdi weld