2013-06-24 4 views

答えて

16

IntegerFloatではありません。オブジェクトの場合、IntegerサブクラスFloatの場合はキャストは機能しますが、キャストは機能しません。

JavaはFloatに自動VHS版intIntegerfloatへのキャスト、そしてオートボックスではないでしょう。この目的の動作をトリガーする唯一のコードが(Float)キャストです。

Float b = (float)i; 

Javaは、その後、intに自動VHS版iありますfloatへの明示的なキャスト(widening primitive conversion, JLS 5.1.2)、代入変換自動ボックスにそれをする:

興味深いことに、これは動作しているようですFloat

2

あなたはあまりにも多くのことを求めています。あなたはそれをunbox iにして、浮動小数点にキャストしてからボックスに入れたいと思う。コンパイラは、私がそれを助けることになるunboxingを推測することはできません。しかし、(浮動小数点数)キャストを(浮動小数点数)キャストに置き換えると、浮動小数点型にキャストするためにアンボックスされている必要があると推測され、うれしくFloatに自動変換されます。

1

ラッパーがある"オブジェクト化"関連するプリミティブタイプです。この種のキャストは、ラップされたプリミティブ型の実際の値ではなく、"オブジェクトレベル"で行われます。

FloatIntegerの間には関係がありません(Numberに関連していますが、それらは兄弟です)。キャストは直接行うことはできません。あなたが望むように

0
public class Conversion { 
public static void main(String[] args) { 
    Integer i = 234; 

    Float b = i.floatValue(); 

    System.out.println(b); 

}} 
0

あなたは仕事にあなたのクラスを書き換えることができます:

public class Conversion { 

    public Float intToFloat(Integer i) { 
      return (Float) i.floatValue(); 
    } 

} 
関連する問題