根据java中的变量类型动态转换为类型

时间:2014-05-14 07:46:48

标签: java casting

我有一个HashMap和一个名为Plugin的类,它包含需要从我提到的地图映射的所有变量。 我只想根据该键在类中声明的变量类型来转换键的值(在Map中)。 让我们说,

- >地图条目: 。 。 结果:“成功” 。

- >插件类中的变量

private String result;

现在我想将键“result”的值转换为Plugin类中的变量结果类型。 我尝试使用

this.result = this.result.getClass().cast(map.get("result"));

这也是

this.result = (this.result.getClass())map.get("result");

由于

2 个答案:

答案 0 :(得分:0)

就像呼吸一样简单:

result = (String) map.get("result");

或者

result = map.get("result").toString();

答案 1 :(得分:0)

实际上,由于早期绑定,这种“动态转换”在Java中是不可能的。编译器检查,右侧部分中的类型是否是左侧部分类型的子类型。

this.result.getClass()返回Class类型的变量,其值在编译器时间内未知,因此编译器不知道强制转换结果的类型,因此无法将强制转换的结果分配给{{1} } field。

你可能会因反思而变得混乱,但这不适合你的情况。

我建议您使用BeanUtils.populate(Plugin pligin, Map map)转移您的媒体资源。

另见java: how can i do dynamic casting of a variable from one type to another?