Kotlin入门精选篇

目录

一.Android Studio配置kotlin

    1.安装kotlin插件

    2.添加kotlin依赖

二.使用kotlin语言开发

三.java转kotlin常见错误

四.kotlin语法案例


一.Android Studio配置kotlin

1.安装kotlin插件

File>Settings>Plugins>搜索关键字“kotlin”进行安装>然后重启Androidstudio生效 

2.添加kotlin依赖

自动添加kotlin依赖:Tools ->Kotlin->Configure Kotlin in Project

手动添加kotlin依赖:配置build.gradle(android)文件

buildscript {

   ext.kotlin_version = '1.2.60'

   dependencies {

       classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

   }

}

手动添加kotlin依赖:配置build.gradle(app)文件

apply plugin: 'kotlin-android'  // 应用此插件来支持android的开发

apply plugin: 'kotlin-android-extensions'  // 应用此插件可以省去我们频繁的findViewById

dependencies {

   // 添加kotlin依赖

   implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

}

完成以上配置之后,我们就可以使用kotlin语言来开发我们的应用程序了!

二.使用kotlin语言开发

1.新建一个Kotlin File/Class文件,可以在kind中选择你需要新建的文件类型:File、Class、Interface、Enum class 、 Object

2.java语言转kotlin语言开发

在Androidstudio项目中右键选择指定的包或者单个java文件,选择在下方的“Convert Java File To Kotlin File ”选项,可自动将.java文件转成.kt文件;并且复制java文件粘贴到kotlin文件中也可以自动将java代码转成kotlin代码;不过在代码转完之后可能会出现一些错误需要自己手动去解决的。

三.java转kotlin常见错误

1.kotlin重写java类的方法时遇到的闪退错误:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter view

意思是说指定为非null的参数为null了,这个时候我们只需要设置该参数允许为null就可以了,根据错误提示,将“view: View”修改为“view: View?”’即可解决。

2.java中用到数组直接转kotlin时遇到的语法错误:

java代码:

public class Test {

       private String title[];

       public Test() {

       title = new String[10];

       }

}  

转成kotlin后

class Test {

   private val title: Array<String>

   init {

       title = arrayOfNulls(10)

   }

}

报语法错误“type inference failed / type mismatch” ,大概意思是说类型推断错误,类型不匹配,原因是arrayOfNulls为空数组,它每个元素都默认允许为null,所以变量类型也必须允许为null,在变量类型String后面加上?即可解决:

class Test {

   private val title: Array<String?>

   init {

       title = arrayOfNulls(10)

   }

}

四.kotlin语法案例

1.kotlin中的继承与实现,Test类继承AppCompatActivity类,并实现View.OnClickListener接口

// 导入此包后,可以拿控件ID直接使用“activity_main.xml”布局中的所有控件,无需findViewById
import kotlinx.android.synthetic.main.activity_main.*

class Test : AppCompatActivity(), View.OnClickListener {

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
        setContentView(R.layout.activity_main)
        tv_tag.text = "免除findViewById,直接使用控件"
    }

    override fun onClick(v: View?) {
    }

}

 2.kotlin中的常量类

object Constants {

    // internal:声明仅同包名下可调用
    internal const val keyDeviceId = "device_id"
    // private:声明仅当前类可调用
    private const val HOST = "https://www.xxx.com"
    // kotlin中字符串使用"$"符号拼接
    const val URL_LOGIN = "$HOST/Api/User/Login?"
    // val:只读 ;var 读写; const:定义常量,只能修饰val
    const val URL_REGISTER = "$HOST/Api/User/Register?"

}

 

3.kotlin中的静态方法

// 当使用object修饰类名时,那么该类名下的方法都是静态方法
object TestUtil {

    fun test() {

    }

}

4.kotlin中的单例模式

class TestInstance {

    // 构造函数
    private constructor() {
    }

    // 伴生对象
    companion object {

        // 定义一个TestInstance对象
        private var INSTANCE: TestInstance? = null

        // 最终返回一个不为null的instance对象
        val instance: TestInstance
            get() {
                if (INSTANCE == null) {
                    INSTANCE = TestInstance()
                }
                return INSTANCE!!
            }
    }
    
}

猜你喜欢

转载自blog.csdn.net/u011038298/article/details/82496135