Kotlin与Java中的类型映射
Kotlin 特殊处理一部分 Java 类型。这样的类型不是“按原样”从 Java 加载,而是映射到相应的 Kotlin 类型。
映射只发生在编译期间,运行时表示保持不变。
Java 的原生类型映射到相应的 Kotlin 类型:
| Java 类型 | Kotlin 类型 |
|---|---|
| byte | kotlin.Byte |
| short | kotlin.Short |
| int | kotlin.Int |
| long | kotlin.Long |
| char | kotlin.Char |
| float | kotlin.Float |
| double | kotlin.Double |
| boolean | kotlin.Boolean |
Java中的一些内置类型也会作相应的映射:
| Java 类型 | Kotlin 类型 |
|---|---|
| java.lang.Object | kotlin.Any! |
| java.lang.Cloneable | kotlin.Cloneable! |
| java.lang.Comparable | kotlin.Comparable! |
| java.lang.Enum | kotlin.Enum! |
| java.lang.Annotation | kotlin.Annotation! |
| java.lang.Deprecated | kotlin.Deprecated! |
| java.lang.CharSequence | kotlin.CharSequence! |
| java.lang.String | kotlin.String! |
| java.lang.Number | kotlin.Number! |
| java.lang.Throwable | kotlin.Throwable! |
Java 的装箱原始类型映射到对应的可空Kotlin 类型:
| Java 类型 | Kotlin 类型 |
|---|---|
| java.lang.Byte | kotlin.Byte? |
| java.lang.Short | kotlin.Short? |
| java.lang.Integer | kotlin.Int? |
| java.lang.Long | kotlin.Long? |
| java.lang.Character | kotlin.Char? |
| java.lang.Float | kotlin.Float? |
| java.lang.Double | kotlin.Double? |
| java.lang.Boolean | kotlin.Boolean? |
另外,用作类型参数的Java类型映射到Kotlin中的平台类型:
例如,List<java.lang.Integer> 在 Kotlin 中会成为 List<Int!>。
集合类型在 Kotlin 中可以是只读的或可变的,因此 Java 集合类型作如下映射:
(下表中的所有 Kotlin 类型都在 kotlin.collections包中):
| Java 类型 | Kotlin 只读类型 | Kotlin 可变类型 | 加载的平台类型 |
|---|---|---|---|
| Iterator<T> | Iterator<T> | MutableIterator<T> | (Mutable)Iterator<T>! |
| Iterable<T> | Iterable<T> | MutableIterable<T> | (Mutable)Iterable<T>! |
| Collection<T> | Collection<T> | MutableCollection<T> | (Mutable)Collection<T>! |
| Set<T> | Set<T> | MutableSet<T> | (Mutable)Set<T>! |
| List<T> | List<T> | MutableList<T> | (Mutable)List<T>! |
| ListIterator<T> | ListIterator<T> | MutableListIterator<T> | (Mutable)ListIterator<T>! |
| Map<K, V> | Map<K, V> | MutableMap<K, V> | (Mutable)Map<K, V>! |
| Map.Entry<K, V> | Map.Entry<K, V> | MutableMap.MutableEntry<K,V> | (Mutable)Map.(Mutable)Entry<K, V>! |
Java 的数组映射:
| Java 类型 | Kotlin 类型 |
|---|---|
| int[] | kotlin.IntArray! |
| String[] | kotlin.Array<(out) String>! |
