lat*_*l42 18 java bytearray kotlin
我不明白为什么如java.security.MessageDigest.digest()被声明为返回方法byte[]在Java中返回一个ByteArray在科特林虽然科特林通常似乎需要byte[]的Array<Byte>.
例如,以下不起作用:
fun main(args : Array<String>) {
val md = java.security.MessageDigest.getInstance("SHA")
if (md == null) throw NullPointerException()
val result : Array<Byte>? = md.digest()
}
Run Code Online (Sandbox Code Playgroud)
类型不匹配:推断类型ByteArray?,但Array<Byte>?预期
And*_*lav 36
由于Java的限制,Kotlin有9种数组类型:Array <...>用于引用数组(在JVM意义上)和8种专用数组类型,即IntArray,ByteArray等.
https://kotlinlang.org/docs/reference/java-interop.html#java-arrays
这种区别的主要原因是性能:如果我们没有专门化数组,它会导致大量的装箱/拆箱并使阵列变慢.这是不可接受的,因为人们可能希望更喜欢数组而不是集合的唯一原因是性能.
Dan*_*l B 11
简而言之,仅供将来参考.
的ByteArray等于字节[]中的Java
阵列<字节>等于字节]中的Java
只有在将代码解析为Java时,才能在Kotlin中使用其中一个.
| 归档时间: |
|
| 查看次数: |
6452 次 |
| 最近记录: |