Android开发Android开发经验谈

Kotlin-第2节、新手使用kotlin常碰到的问题

2018-10-22  本文已影响6人  JuliusL

目录:
1、Kotlin没有封装类
2、Kotlin类型空值敏感
3、Kotlin没有静态变量与静态方法

1、Kotlin没有封装类

A.java:

public class A implements AInterface{
    public static final A a = new A();
    
    @Override
    public void putNumber(int num){
        System.out.println("int");
    }

    @Override
    public void putNumber(Integer num){
        System.out.println("Integer");
    }
}

A.kt:

class A:AInterface{
    override fun putNumber(num:Int){
        println("int")
    }
}

2、Kotlin类型空值敏感

A.java

public class A {
    public static String format(String string){
        return string.isEmpty()?null : string;
    }
}

Test.kt

fun function(str:String){
    val fmt1 = format(str)
    val fmt2:String = format(str)//手动声明无符号的类型
    val fmt3:String? = format(str)//可空类型

    //1、str为空
    println(fmt1.length)//报NullPointerException,因为String!是兼容类型,会按照java的语法特性去执行
    println(fmt3?.length)//输出null,正常执行
}

3、Kotlin没有静态变量与静态方法

kotlin的匿名内部类是被编译成class的时候会被创建INSTANCE静态对象,java调用要INSTANCE点来调用。

object Test{
    fun sayMessage(msg:String){
        println(msg)
    }
}
//java code
Test.INSTANCE.sayMessage("hello");
//kotlin code
Test.sayMessage("hello")
object Test{
    @JvmStatic
    fun sayMessage(msg:String){
        println(msg)
    }
}
//java code
Test.sayMessage("hello");
//kotlin code
Test.sayMessage("hello")
上一篇 下一篇

猜你喜欢

热点阅读