- build模式配置方法
java写法
fun setConnect(timeout: Long):Builder{
connectTimeout = timeout
return this
}
kotlin写法
fun setConnectTimeout(timeout: Long) = apply {
connectTimeout = timeout
}
//如果函数体是表达式可以直接用 =
//apply返回的是当前类
- as?
return api as? T ?: generateApi(service)
as运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行;
如果类型不兼容,使用as?运算符就会返回值null。在Kotlin中,父类是禁止转换为子类型的。
- 替换匿名内部类
java写法
private val interceptor0 = object: Interceptor{
override fun intercept(chain: Interceptor.Chain): Response {
return chain.proceed(chain.request())
}
}
kotlin写法
private val interceptor1
get() = Interceptor {
it.proceed(it.request())
}
- 登录后保存User信息
var user: User? = null
set(value) {
field = value
save()
}
get() {
if (field == null) {
// 初始化用户信息
field = UserStore.instance.getUser()
}
return field
}
登录成功后只需要将 user = User()
退出登录只需要将 user = null
判断用户是否登录扩展
var isLogin: Boolean = false
private set
get() = user != null && apiToken.isNotEmpty()
如果禁止set 可以用private修饰。
- 13213
- 21321
- 123213
- 123123
网友评论