[英]Why cant we typecast Float(wrapper) to int(primitive) in java?
當我在進行從float
到int
類型的類型轉換以及從Integer
到int
類型轉換時,它正在工作。 但是,當我嘗試將類型從Float
轉換為int
類型時,卻收到“不兼容類型”錯誤。 為什么我們不能從包裝器轉換為原始類型(除了它自己的原始類型)。
因為, Float
是類類型。 它源自Object
。 但是int
是原始類型。 您可以使用floatValue()
進行轉換。
好的,這就是包裝類和基元之間的區別所在。 它使用有用的方法將值包裝在Class周圍。 這就是為什么要轉換為int的原因,您必須使用
Float f;
int i = (int)(f.floatValue());
或當然
Float f;
int i = f.intValue();
從某種意義上來說,包裝器是一個包裝某個值的類,從該類中提取一個值而不是將一個類轉換為一個值更合乎邏輯。
請注意java.lang.Float的源代碼: http : //grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Float.java#Float.intValue %28%29也許這使事情更清楚了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.