栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440174.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号