Casting un objeto java a objeto en Scala

Hola, trabajando en una aplicación de Android SMS en scala alls va bien esperar simplemente no puedo encontrar la manera de escribir el siguiente código java en scala. Cualquier ayuda apreciada

//---retrieve the SMS message received--- Object[] pdus = (Object[]) bundle.get("pdus"); msgs = new SmsMessage[pdus.length]; for (int i=0; i<msgs.length; i++){ msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 

Tengo que admitir que no sé cómo escribir Object [] en scala no es java.util.ArrayList [java.lang.Object] He intentado usar el Bundle.getStringArrayList para obtener una lista [String] y hacer un getBytes en el Cuerdas, pero que no funciona … Mi último intento fue:

 //I know I should be using an Option ... def getSmsListFromIntent(intent:Intent):List[SmsMessage]= { val bundle = intent.getExtras() var ret:List[SmsMessage]= null if (bundle != null) ret= for { pdu <- bundle.getStringArrayList("pdus").toList } yield SmsMessage.createFromPdu( pdu.getBytes()) else ret= List() ret 

Código java viene de: http://mobiforge.com/developing/story/sms-messaging-android Gracias por cualquier ayuda

Las siguientes respuestas a la pregunta en el título y no puede ser la mejor manera de abordar el problema. Tomalo por lo que vale.


La traducción literal de un elenco en Scala es asInstanceOf :

 var x: Object = Array("foo", "bar"); var y = x.asInstanceOf[Array[Object]]; >> x: java.lang.Object = Array(foo, bar) >> y: Array[java.lang.Object] = Array(foo, bar) 

Sin embargo, como un ejercicio divertido, ¿por qué este resultado en un ClassCastException?

 var x: Object = Array(1, 2); var y = x.asInstanceOf[Array[Object]]; 

Codificación feliz

Sólo para completness esto es lo que terminé escribiendo con la sugerencia de pst:

  def getSmsListFromIntent(intent:Intent)= { val bundle = intent.getExtras() if (bundle != null) { bundle.get("pdus") .asInstanceOf[Array[Object]] .map(pdu => SmsMessage.createFromPdu( pdu.asInstanceOf[Array[Byte]] )) } else Array[SmsMessage]() } 
  • Leer mensajes de entrada de un número determinado y mostrarlos en una actividad
  • Android: Marcar mensaje de texto (SMS) no leído
  • Android DevicePolicyManager lockNow ()
  • Cómo eliminar un SMS de la bandeja de entrada en Android mediante programación?
  • ¿Por qué no puedo enviar un esqueleto espeluznante y espeluznante SMS?
  • Obtener número de teléfono para varios destinatarios en android
  • Cómo crear BroadcastReceiver sin actividad
  • Administrador de sms de Android no envía sms
  • Acceso a mensajes SMS en la tarjeta SIM
  • ¿Cómo pasar datos a BroadcastReceiver?
  • Cómo obtener llamadas perdidas y recuento de SMS
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.