赞
踩
public class Person { private String name; private String gender; private int wage = 1000; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public void setWage(int wage) { this.wage = wage; } }
fun main() {
val person = Person()
person.name = "yao"
person.gender = "male"
println(person.wage)
// 无法访问,因为wage只有setter,它在Kotlin中不会作为属性可见。
// Kotlin目前不支持只写属性。
}
如果一个Java方法返回void,从Kotlin调用时返回Unit
。
val person = Person()
person.gender = "male"
println(person.setWage(100)) // kotlin.Unit
Java中声明的类型在Kotlin中称为平台类型。调用平台类型变量的方法时,Kotlin不会在编译时报告可空性错误,但运行时调用可能会失败。
val person = Person()
person.gender = "male"
println(person.name.substring(1)) // Exception
— T!
表示T
或者T?
。
— (Mutable)Collection<T>!
表示可以可变或不可变、可空或不可空的T
的Java集合。
— Array<(out) T>!
表示可空或者不可空的T
(或T
的子类型)的Java数组。
原生类型:
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类型 | 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.CharSequence | kotlin.CharSequence! |
java.lang.String | kotlin.String! |
java.lang.Number | kotlin.Number! |
java.lang.Throwable | kotlin.Throwable! |
装箱原始类型:
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只读类型 | Kotlin可变类型 | 加载的平台类型 |
---|---|---|---|
Iterator | Iterator | MutableIterator | (Mutable)Iterator! |
Iterable | Iterable | MutableIterable | (Mutable)Iterable! |
Collection | Collection | MutableCollection | (Mutable)Collection! |
Set | Set | MutableSet | (Mutable)Set! |
List | List | MutableList | (Mutable)List! |
ListIterator | ListIterator | MutableListIterator | (Mutable)ListIterator! |
Map<K, V> | Map<K, V> | MutableMap<K, V> | (Mutable)Map<K, V>! |
Map.Entry<K, V> | Map.Entry<K, V> | MutableMap.Entry<K, V> | (Mutable)Map.(Mutable)Entry<K, V>! |
数组类型
Java类型 | Kotlin类型 |
---|---|
int[] | kotlin.IntArray! |
String[] | kotlin.Arrat<(out) String>! |
Foo<? extends Bar>
转换成Foo<out Bar!>!
Foo<? super Bar>
转换成Foo<in Bar!>!
List
转换成List<*>!
,即List<out Any?>!
Kotlin在运行时不保留泛型, Kotlin只允许is
检测星投影的泛型类型:
if (a is List<Int>) // 错误:无法检测它是否真的是一个 Int 列表
if (a is List<*>) // OK:不保证列表的内容
public class JavaArrayExample {
public void removeIndicesVarArg(int... indices) {
// 在此编码……
}
}
使用展开运算符*
来传递IntArray
,无法传递null。
val javaObj &#
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。