1,Kotlin 调用Java
创新互联是专业的叠彩网站建设公司,叠彩接单;提供成都网站设计、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行叠彩网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!import java.util.* fun demo(source: List关于getter和setter的默认调用
import java.util.Calendar fun calendarDemo() { val calendar = Calendar.getInstance() if (calendar.firstDayOfWeek == Calendar.SUNDAY) { // 调用了getFirstDayOfWeek() calendar.firstDayOfWeek = Calendar.MONDAY // 调用了 setFirstDayOfWeek() } if (!calendar.isLenient) { // 调用了isLenient() calendar.isLenient = true // 调用了setLenient() } }注意,如果一个java属性只有setter,那么Kotlin就无法访问。 Kotlin访问java的属性其实是默认调用了这个属性的getter函数
如果一个java函数是void类型的,那么kotlin调用后获得的返回值类型是Unit
如果一个java函数名用了kotlin的关键字,比如: in, object, is ,那么在kotlin中访问的时候,要给函数名加上' ,
foo.`is`(bar)2,null安全和平台类型
java中的对象很可能是null,kotlin把java对象当做平台类型,对其null安全要求不再那么苛刻
val list = ArrayList我们不能在代码中显式声明平台类型,为了方便编译阶段检查,我们设定以下记忆符号:
T!
意思是 "T
或T?
",
(Mutable)Collection
意思是 "Java collection of T
may be mutable or not, may be nullable or not",
Array<(out) T>!
意思是"Java array of T
(or a subtype of T
), nullable or not"
3,类型对应关系
Java type | Kotlin type |
---|---|
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 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! |
Edit Page
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.Character | kotlin.Char? |
java.lang.Float | kotlin.Float? |
java.lang.Double | kotlin.Double? |
java.lang.Boolean | kotlin.Boolean? |
注意,如果java用了原始类型作为参数,那么在kotlin中转换为平台类型,比如:List
在kotlin中对应 List
Kotlin的集合类型可以是只读的,或者可变的,所以,跟java的集合类型对应关系如下 (下表里面的这些Kotlin 类型都在包 kotlin.collections里
):
Java type | Kotlin read-only type | Kotlin mutable type | Loaded platform type |
---|---|---|---|
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 | Map | MutableMap | (Mutable)Map |
Map.Entry | Map.Entry | MutableMap.MutableEntry | (Mutable)Map.(Mutable)Entry |
Java'的对应如下:
Java type | Kotlin type |
---|---|
int[] | kotlin.IntArray! |
String[] | kotlin.Array<(out) String>! |
注意: java的static 变量不能作为kotlin companion 对象直接访问,必须要带上java类型才可以,比如 java.lang.Integer.toHexString(foo)
.
参考文献:https://kotlinlang.org/docs/reference/java-interop.html
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。