Retrofit:kotlin中如何解析java的boolean类型

现在kotlin 已经慢慢替代java了,我在用kotlin编写项目中遇到一个问题,即在使用Rxjava+Retrofit2库网络请求的时候出现一个问题。

因为后台的数据类型肯定是java类型,所以boolean是java类型,但是因为我们前端是在kotlin中使用retrofit,所以我们会使用如下写法。

接口写法

   @FormUrlEncoded
    @POST("phone/sysapi/user/checkuser.p")
    fun checkUser(@Field("phoneNumber") mobile: String): Observable>

请求写法

 RetrofitFactory.API.checkUser(login_et_input!!.text.toString())
            .io_main().subscribe(object : BaseObserver() {
                override fun onSuccees(t: BaseEntity) {
                    if (t.data) {
                        val map = HashMap()
                        map["phoneNumber"] =
                                PhoneEditText.getPhoneText(login_et_input!!.text.toString())
                                    .toString()
                        loginPresenter!!.getcode(this@PrepareLoginActivity, map)
                    } else {
                        startActivity(
                            Intent(
                                this@PrepareLoginActivity,
                                LoginByPasswordActivity::class.java
                            )
                        )
                    }
                }
            })

当我们调试的时候发现,t.data是空。这是因为这两个类型有点不一致。具体可以看下面的一篇博客。
Kotlin 调用Java写的方法,参数Class 神坑

弄了好久之后,才发现需要在kotlin中调用java的类型。

正确写法如下,希望帮到大家。

 RetrofitFactory.API.checkUser(login_et_input!!.text.toString())
            .io_main().subscribe(object : BaseObserver() {
                override fun onSuccees(t: BaseEntity) {
                    if (!Boolean::class.javaObjectType.isInstance(t.data)) {
                        val map = HashMap()
                        map["phoneNumber"] =
                                PhoneEditText.getPhoneText(login_et_input!!.text.toString())
                                    .toString()
                        loginPresenter!!.getcode(this@PrepareLoginActivity, map)
                    } else {
                        startActivity(
                            Intent(
                                this@PrepareLoginActivity,
                                LoginByPasswordActivity::class.java
                            )
                        )
                    }
                }
            })

你可能感兴趣的:(android开发,android,retrofit,kotlin)