我正在尝试在构造函数中加载一个传递属性文件作为参数的类,但是我得到一个强制转换异常:java.lang.String cannot be cast to java.lang.Class
。
有人可以帮忙吗?
这是我的代码:
myMap.properties
BAR=com.mycomp.myapp.Bar
application-context.xml如下所示:
<util:properties id="myMap"
location="classpath:myMap.properties"
local-override="false"
value-type="java.lang.Class" />
<bean id="foo" class="com.mycomp.myapp.Foo">
<constructor-arg name="myMap" ref="myMap"/>
</bean>
Foo.java
public class Foo {
private Map<String, Class<Object>> myMap;
public Foo(Map<String, Class<Object>> myMap){
this.myMap = myMap;
Class<Object> barClass = myMap.get("BAR"); //failure point
}
}
答案 0 :(得分:0)
你可以这样做:
上下文:
<context:property-placeholder location="classpath:myMap.properties"/>
<bean id="foo" class="com.mycomp.myapp.Foo">
<constructor-arg value="${BAR}" />
</bean>
富:
public class Foo {
private String bar;
public Foo(String bar){
this.bar = bar;
}
}
或者如果你真的需要整个文件,你可以将路径传递给属性文件并在构造函数中加载它。