我有一個必須使用 / 呼叫的 Java 庫,我正在從 Scala 執行此操作。Java 庫有這樣的簽名:
JavaFunction( List<Object[]> data) {
this.data = data;
}
我假設要與 Scala 兼容,我需要有一個 AnyRef,所以我定義了這個:
val fromScala: List[Array[AnyRef]] = List(
Array[AnyRef](1, "Str1", 'a'),
Array[AnyRef](2, "Str2", 'b'),
Array[AnyRef](3, "Str3", 'c'),
Array[AnyRef](4, "Str4", 'd')
)
當我試圖將它傳遞給建構式時,在編譯時,我遇到了以下錯誤:
the result type of an implicit conversion must be more specific than AnyRef
Array[AnyRef](1, "Str1", 'a')
我知道編譯器希望我應該明確說明我的型別,但我看不到任何其他方法可以使其兼容。有任何想法嗎?
uj5u.com熱心網友回復:
問題是1那些AnyVal不是AnyRef因此隱式轉換發生在幕后。
您可以使用Int.box(1)創建一個java.lang.Integer
但是,該裝箱仍然會在運行時發生,因此您只是添加樣板,您可以嘗試查看是否List[Array[Any]]按預期編譯和作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/422306.html
標籤:
