繁体   English   中英

检测存储在Java对象中的原语的最佳方法是什么?

[英]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();
}

这将处理ByteShortIntegerFloatDouble以及大多数(但不是全部) Long值(大于±2 52的值将进行舍入)。 最好使用doubleValue()以避免intValue()longValue()可能引入的截断。

Object不能存储原始值,因此您无需检查这些值。 它们已经被装箱成它们相应的引用类型: intIntegerfloatFloat ,等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM