当从Eclipse调用Spring的“Validate”时,当我想使用Enum的隐式“valueOf”方法返回枚举时,我会遇到很多错误。
例如:
<bean id="docFamily" class="...DocFamily" factory-method="valueOf">
<constructor-arg>
<value>LOGY</value>
</constructor-arg>
</bean>
Eclipse告诉我:
非静态工厂方法'valueOf' 在工厂中找不到1个参数 豆类......
但据我从文档中了解到:
BeanWrapperImpl支持JDK 1.5枚举 和旧式枚举类:String 值将被视为枚举值 名称
所以上面应该正常吗? (在这种情况下,btw是'constructor-arg'正确的标签,不应该是'method-arg'吗?)。
为什么Eclipse / Spring的“验证”会给我错误信息?
答案 0 :(得分:4)
Enum.valueOf()
有两个参数:
public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
因此,所需的定义可能如下所示:
<bean id="docFamily" class="java.lang.Enum" factory-method="valueOf">
<constructor-arg index = "0"><value>...DocFamily</value></constructor-arg>
<constructor-arg index = "1"><value>LOGY</value></constructor-arg>
</bean>
然而,这样的事情可能是一个更优雅的解决方案:
<util:constant id = "docFamily" static-field = "...DocFamily.LOGY" />
答案 1 :(得分:0)
我只是尝试使用它:
<bean id="docFamily" class="...DocFamily" factory-method="valueOf">
<constructor-arg type="java.lang.String" value="LOGY"/>
</bean>
它有点像魅力。它适合你吗?