Ⅰ kotlin能和java混用吗
上代码,其实就是在gradle中加入kotlin的插件就好了.
首先是project 的gradle文件
buildscript {
ext.kotlin_version = "1.0.1" //加上这个,至于为什么是1.0.1待会解释
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0-alpha4'//这个不用管
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
//加上这个⬆️
}
}
然后是mole的gradle文件
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' //加上插件
...
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
...
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" //加上库
}
代码是在android中运行的
kotlin代码
data class Student(val name:String,val sex:Char,val age:Int,val course:Array<String>){
}
java调用代码
public void demo() {
Student[] students = new Student[]{
new Student("x1",'男',14,new String[]{"数学","语文"}),
new Student("x2",'女',15,new String[]{"英语","语文"}),
new Student("x3",'男',16,new String[]{"化学","语文"}),
new Student("x4",'女',17,new String[]{"物理","语文"}),
};
for (Student student : students) {
Log.v(TAG,student.toString());
}
}
Ⅱ kotlin和java开发android哪个好
初级工程师,2周经验来分享我的视角:1.无缝的Java互调保证了不会出现什么绕不过的坑正式使用Kotlin之前尝试过Kotlin与DataBinding同用,但是在.kt文件中import DataBinding相关的类会编译报错,最后把所有与DataBinding相关的代码都放到.java中,在.kt中去调用。不了解Kotlin的反射与Java反射的差异,但是问题大概就是出在这里。2.Extension 带来的语法糖,甜过初恋举个栗子,各种system service再也不用强制类型转换了,只需写一个context的extension即可。事实上Anko库已经提供了大量的写好的extension。再也不用为了获取一个简单的service对象需要强制类型转换而换行了。。。我吧一些application wide的东西都存为application的property,让后给context一个extension,以后任何context来获取这些service就是一个简单的读property了。3.Lambda衍生出来的Builder,最碉堡的是Anko库可以用Kotlin像写xml一样写洁面了,还有DSL preview插件帮你。。。这样写出来的洁面不但加载速度快(少了xml解析时间),配置各种view也是很方便的。但是使用lambda也是有坑的,有些以回调为key的方法是不可以使用匿名对象的,否则没法取消。例如蓝牙低功耗扫描时startLeScan(callback: LeScanCallback)stopLeScan(callback: LeScanCallback) 这种,开始和结束是要同一个object的,所以不要使用lambda。其实这个很好理解,lambda很像匿名Runnable,只不过现在是一个获得了一等公民身份的方法。4.更多新一代语言的语法写起来很爽的,不多表5.工具链相对完整有个JetBrains的爹,插件更新紧跟语言版本。各路大神的加持,JakeWharton的好几个库都有Kotlin特别适配版,rx里面都有Kotlin版本了。。(事实上正在用RxKotlin,第一次使用rx)更多还在探索中。。。