¿Dónde poner los paréntesis para convertir un objeto de forma concisa fundido a un tipo primitivo y sin auto-unboxing?

StackOverflow https://stackoverflow.com/questions/3909698

Pregunta

Con autounboxing, esta declaración automáticamente el trabajo:

int myPrimitive = (Integer) doIt();

Pero si quiero convertir explícitamente desde un Integer a un int aquí en una sola línea, ¿dónde tengo que poner los paréntesis?

¿Fue útil?

Solución

O bien el compilador unboxes el entero para usted, o lo hace usted mismo - esto no se puede evitar

.

Así que hay que hacer, ya sea

int myPrimitive = ((Integer) doIt()).intValue();

o, más sencillamente, el cambio doIt() a devuelven un int ya que parece que quieren tratar con ints en lugar de Integers (nulables).

Otros consejos

Usted puede hacer esto:

int myPrimitive = (int) (Integer) doIt();

Sin embargo, como usted ha dicho, auto-unboxing conseguirá que para usted .

mal ejemplo para mostrar que la cadena pone en el trabajo ( No utilice en el código ):

Map notReallyAMap = (Map) (Object) new String();

La cosa con los moldes de la cadena, es que donde quiera que lo utilice, ya sea el reparto es de fiar, y se puede eliminar intermediarios; o el reparto simplemente causará un ClassCastException. Así nunca se debe utilizar .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top