嗯,然后的然后,今天有Qcon大会哈,很不错哈,公司有5张门票,嗯,明天过去看看。Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。嗯,上面的话我是复制百度百科的,其实就想说,这东西可以用来开发Android。好,我们来看看这玩意儿。
那么,现在大家开发Android的话一般来说都是直接用Java,这个没错吧(高手除外)。嗯,那么用力那么久的Java,不知道大家是否有想过Java的不足,已经很多可以优化的地方呢。当然,新修订的版本中也逐渐覆盖以往的不足,但是Android开发者们还没来得及用上它。所以这也使得Kotlin这样的语言可以有用武之地,可以让开发者们在旧的开发环境中使用新的特性。
嗯,然后我想说的是其实我也接触这门语言不是很久,今天就写一个入门级的博文吧,至少能让大家可以在Android Studio中尝试用Kotlin去开发是吧。
(之前我第一次接触的时候看了很多博文,其实现在的配置完全不用像以前那么麻烦,其实就很简单的3个步骤)
打开你的Android studio 在设置中打开plugins,然后在里面搜索Kotlin,点击安装,之后安装后重启。
然后就是新建一个工程,然后你可以右键试试,看看是不是多出了2个选项。如图。
然后定位到MainActivity,在菜单栏选择“Code”,选择“Convert Java File to Kotlin File”,你会看到你的MainAvtivity变成了Kotlin文件,这个时候其实你去编译的话是有问题的。看第三步。
然后由于你是第一次使用Kotlin,Studio会提示要你配置Kotlin的,点击配置即可,其实啥都不用选,直接点“ok”。到这里你就配置完成了,然后可以试试编译运行了。
数据模型在开发中绝对是不可避免的,以往都会定义很多变量,然后添加get(),set()方法。如果现在使用Kotlin开发,你可以这么定义。
/**
* Created by Blin on 2016/10/20.
*/
data class People(
var id: Long,
var name: String,
var weight: Double,
var height: Double
)
以往我们在使用数据的时候最多的就是
if(a != null){
...
}
那么在Kotlin中其实完全么有必要这么写了,可以看一下下面代码的顺序思路和注释。
// 这是不允许的,People不能为null
// var people: People = null
// 以下是正确的声明
var people: People? = null
// 不可以直接调用people,因为有可能people是null
// people.id
// 如果people有可能为null,则必须先用如下的形式判断
people?.id
// 当然,如果按照java的习惯,先判断不为null了,那也是可以直接使用的
if(people !=null) people.id
// 如果能该变量一定不为null,可以使用2个感叹号表示,但是如果为null,那会抛出异常
// people!!.id
可以看出,在上面声明变量的时候不能直接生命为null,必须在等号前面加一个? 表示其实people是可以为null的。然后就是不能直接调用方法或者引用变量,必须在引用之前加?询问,当然如果能保证当前变量一定不为null,那可以直接用!!表示然后调用。如果在if()中判断了不为null,那么是可以直接调用的。
刚才上面我们创建了一个People类,如果我想要给该类添加一个方法,可以这么做
fun People.toast(context: Context,message: CharSequence){
Toast.makeText(context,message,Toast.LENGTH_SHORT).show()
}
然后想调用可以这么调用
mPeople.toast(mContext,"其实我是来测试的")
这个函数其实java8也支持了,当然之前大家是通过第三方依赖来支持的。
我这边找到那个默认TextView,然后添加点击事件
tv = findViewById(R.id.text) as TextView?
tv?.setOnClickListener { mPeople.toast(mContext,"其实我是来测试的") }
然后你点击那个“holleWord” 就可以显示Toast了。
嗯,总的来说Kotlin真的是非常简洁,的确极大的简化了代码,对于开发者来说的确是可以大大提高开发效率。虽说Kotlin现在可以和java无缝连接,意味着为我们可以直接使用Java现在已有的大量类库,所以说这门语语言虽然很年轻,但是已经有这大量的库可以使用。
在使用过程中我们很少需要指定类型,编译器可以在绝大多数情况下推断出变量或者返回值的类型,这直接带来的好处就是安全与便捷。
还有让我觉得很棒的就是null是安全的,在java中,遇到最多的,最容易出问题的就是nullPointerExcetion,在Kotlin中的null是显式的,就是是强制要求开发者去注意这一点,从而减少nullPointerExcetion的出错率。