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);
bigdecimal转换为integerNumber obj = theClass.cast(something);
但是这样做仍然没有意义,你可以将其转换为Number。
投射对象不会改变任何东西。这只是编译器对待它的⽅式。
这样做的唯⼀原因是检查对象是给定类的实例还是其任何⼦类的实例,但是最好使⽤instanceofor 来完成Class.isInstance()。
更新资料
根据你上次更新的真正的问题是,你有⼀个Integer在你的HashMap应分配给⼀个Double。在这种情况下,你可以做的是检查字段的类型并使⽤以下xxxValue()⽅法Number
...
Field f = Class().Key());
Object value = Value();
if (Integer.class.Type())) {
value = Integer.valueOf(((Number) Value()).intValue());
} else if (Double.class.Type())) {
value = Double.valueOf(((Number) Value()).doubleValue());
} // other cases as needed (Long, Float, ...)
f.set(this, value);
...
(不确定我是否喜欢在中输⼊错误类型的想法Map)
2020-03-17
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论