校验空字符串
isNullOrEmpty
为空或字符创长度为0时返回true,非空与可空均可调用isNullOrBlank
为空或字符串为0或全为空格时返回true,非空与可空均可调用isEmpty
字符串长度为0时返回true,只有非空可调用isBlank
字符串长度为0或全为空格时返回true,只有非空可调用isNotEmpty
字符串长度大于0时返回true,只有非空可调用isNotBlank
字符串长度大于0且全不是空格时返回true,只有非空可调用
静态常量定义
companion object {
const val FINAL_ELEMENT = 1001
}
with的用法
with是将某个对象作为函数的参数,在函数快内可以通过this指代该对象。在函数快内可以直接调用对象的方法或者属性。
with(user){
// 这里可以直接调用user的属性
println(user.userName)
println(user.age)
}
无需使用findViewById或者butterKnife
使用Kotlin Android Extensions插件即可实现该功能,它是Kotlin插件的组成之一,无需再单独安装插件。
在对应modules的build.gradle中添加该插件即可使用。
apply plugin: 'kotlin-android-extensions'
如何使用,例如布局文件是activity_main.xml
// 导包
import kotlinx.android.synthetic.main.activity_main.*
// 使用
tv_title.text = "hello world"
lateinit
在某个类中,如果某些成员变量没办法一开始就初始化,并且又不想使用可空类型,那么可以使用lateinit来修饰它。
被lateinit修饰的变量,并不是不初始化,它需要在生命周期流程中进行获取或者初始化。
// 如果访问未初始化的 lateinit 变量会导致 UninitializedPropertyAccessException。
lateinit var userName: String
let函数
let函数把当前对象作为闭包的it参数,返回值是函数里面的最后一行,或者指定return。
跟?结合使用,let函数可以在对象不为null的时候执行函数内的代码,从而避免了空指针的出现。
?.let{
// ...
}
函数的默认参数和扩展函数
在Kotlin中,函数可以拥有默认参数,这样一来就不再需要像Java那样为了默认参数而写一大长串重载函数了。
扩展函数是指在一个类上增加一种新的行为,在Java中,通常会实现很多带有static方法的工具类。kotlin中的扩展函数的一个优势就是我们不需要在调用方法的时候把整个对象当做参传递,扩展函数表现的就像是属于这个类一样,而且我们可以使用this关键字、所有的public方法。
/**
* 给Context创建一个扩展函数customToast,这个函数不需要传入任何context,它可以被任何Context或者它的子类调用
* 比如Activity或者Service
*/
fun Context.customToast(msg: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(this, msg, duration).show()
}
// 调用
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//...
customToast("short customToast")
customToast("long customToast", Toast.LENGTH_LONG)
}
}