java 动态转换类型_Java:如何将变量从一种类型动态转换为另一种类型?

小编典典

是的,可以使用反射

Object something = "something";

String theType = "java.lang.String";

Class> theClass = Class.forName(theType);

Object obj = theClass.cast(something);

但这没有多大意义,因为必须将结果对象保存在Object类型变量中。如果你需要变量属于给定的类,则可以将其强制转换为该类。

如果要获取给定的类,Number例如:

Object something = new Integer(123);

String theType = "java.lang.Number";

Class extends Number> theClass = Class.forName(theType).asSubclass(Number.class);

Number obj = theClass.cast(something);

但是这样做仍然没有意义,你可以将其转换为Number。

投射对象不会改变任何东西。这只是编译器对待它的方式。

这样做的唯一原因是检查对象是给定类的实例还是其任何子类的实例,但是最好使用instanceofor 来完成Class.isInstance()。

更新资料

根据你上次更新的真正的问题是,你有一个Integer在你的HashMap应分配给一个Double。在这种情况下,你可以做的是检查字段的类型并使用以下xxxValue()方法Number

...

Field f = this.getClass().getField(entry.getKey());

Object value = entry.getValue();

if (Integer.class.isAssignableFrom(f.getType())) {

value = Integer.valueOf(((Number) entry.getValue()).intValue());

} else if (Double.class.isAssignableFrom(f.getType())) {

value = Double.valueOf(((Number) entry.getValue()).doubleValue());

} // other cases as needed (Long, Float, ...)

f.set(this, value);

...

(不确定我是否喜欢在中输入错误类型的想法Map)

2020-03-17

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值