映射类型

Kotlin将一些Java类型做特殊的对待。这些类型是不会加载成类似Java中的样子,但是会映射到相应的Kotlin类型。映射仅仅是在编译时影响,运行时保持不变。Java的原声数据类型被映射到相应的Kotlin类型:

Java Type Kotlin Type
byte kotlin.Byte
int kotlin.Int
long kotlin.Long
char kotlin.Char
float kotlin.Float
double kotlin.Double
boolean kotlin.Boolean

一些非原生内置类也被按照如下的方式进行映射:

Java type Kotlin type
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 type Kotlin type
java.lang.Byte kotlin.Byte?
java.lang.Short kotlin.Short?
java.lang.Integer kotlin.Int?
java.lang.Long kotlin.Long?
java.lang.Char kotlin.Char?
java.lang.Float kotlin.Float?
java.lang.Double kotlin.Double?
java.lang.Boolean kotlin.Boolean?

需要注意的是一个封装原生数据类型被用作类型参数时会被映射到一个平台类型:比如List<java.lang.Integer>变成Kotlin中的List<Int!>。

集合类型在Kotlin中可能是只读或可变的,因此Java的集合被映射到如下的形式(下面表格中所有的Kotlin类型属于kotlin.collections):

Java type Kotlin read-only type Kotlin mutable type Loaded platform type
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 type Kotlin type
int[] kotlin.IntArray!
String[] kotlin.Array<(out) String>!

results matching ""

    No results matching ""