2017-02-08 3 views
4

Ich habe ein Beispiel gesehen, wo der folgende Code verwendet wird, eine doppelte mit einem Schwimmer zu konvertieren:Java - konvertieren Doppel zu schweben

Double.valueOf(someDouble).floatValue() 

Ich würde es nur tun, wie

(float)someDouble 

Ist Gibt es einen Vorteil für die Verwendung der ehemaligen?

+6

Keine wie auch immer. Es erzeugt ein "Double" -Objekt, das eine Verschwendung von Speicher darstellt, und ruft eine Methode auf, die die gleiche Typumwandlung ausführt, die Sie in einer Operation ausgeführt haben. Völlig sinnlos. – EJP

+0

Vielleicht hat der Autor dieses Codes gelernt, dass Casts vermieden werden sollten und wendet diese Idee nun gedankenlos an. – Jesper

Antwort

9

Mit Blick auf die Umsetzung der Double ‚s floatValue():

/** 
* Returns the value of this {@code Double} as a {@code float} 
* after a narrowing primitive conversion. 
* 
* @return the {@code double} value represented by this object 
*   converted to type {@code float} 
* @jls 5.1.3 Narrowing Primitive Conversions 
* @since JDK1.0 
*/ 
public float floatValue() { 
    return (float)value; 
} 

Es sieht aus wie es genau wie Ihr Casting verhält. Daher hat es keinen Vorteil, es zu benutzen.

+7

Außer verschwenderisch ein 'Double' Objekt zu erstellen ... was ein * Nachteil * ist. – EJP

+1

@EJP Das stimmt. – Eran

Verwandte Themen