[英]What is the best way to detect a primitive stored in a Java Object?
我需要将存储在Java对象中的值转换为Integer,检测该对象包含哪种值的最佳方法是什么?
例如,当Double存储在对象中时,我这样做:
Double myval = 0.0;
Object myobj = myval;
if (myobj instanceof Double) {Double dd = (Double) myobj; converted = dd.intValue();}
我不知道这是否有效,还是最好的方法。 由于对象可以包含任何类型的值(Double,Integer,int,float),检测原始值的最佳方法是什么?
谢谢。
编辑:阅读答案后,我意识到一个对象不能包含基元,因此,问题是错误的。 感谢您澄清这一点!
所有对象编号类型都是Number的子类:
if (myobj instanceof Number) {converted = ((Number)myobj).intValue();}
如果它包含所有不同种类的数字,则可以使用:
if (myobj instanceof Number) {
converted = ((Number) myobj).doubleValue();
}
这将处理Byte
, Short
, Integer
, Float
和Double
以及大多数(但不是全部) Long
值(大于±2 52的值将进行舍入)。 最好使用doubleValue()
以避免intValue()
或longValue()
可能引入的截断。
Object
不能存储原始值,因此您无需检查这些值。 它们已经被装箱成它们相应的引用类型: int
到Integer
, float
到Float
,等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.