gpt4 book ai didi

java - 在 Scala 中将 java 对象转换为 Object[]

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:54 25 4
gpt4 key购买 nike

您好,在 Scala 中开发 Android SMS 应用程序一切顺利,我只是找不到在 Scala 中编写以下 Java 代码的方法。任何帮助表示赞赏

//---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]);

我必须承认我不知道如何在 scala 中编写 Object[] 它不是 java.util.ArrayList[java.lang.Object]我试过使用 Bundle.getStringArrayList 来获取 List[String] 并在字符串上执行 getBytes 但那不起作用......我最后一次尝试是:

//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

java代码来自:http://mobiforge.com/developing/story/sms-messaging-android感谢您的帮助

最佳答案

以下回答了标题中的问题,但可能不是解决问题的最佳方法。物有所值。


Scala中的cast直译为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)

但是,作为一个有趣的练习,为什么这会导致 ClassCastException?

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

快乐编码

关于java - 在 Scala 中将 java 对象转换为 Object[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com