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<BaseEntity<Boolean>>

请求写法

 RetrofitFactory.API.checkUser(login_et_input!!.text.toString())
            .io_main().subscribe(object : BaseObserver<Boolean>() {
                override fun onSuccees(t: BaseEntity<Boolean>) {
                    if (t.data) {
                        val map = HashMap<String, String>()
                        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<Boolean>() {
                override fun onSuccees(t: BaseEntity<Boolean>) {
                    if (!Boolean::class.javaObjectType.isInstance(t.data)) {
                        val map = HashMap<String, String>()
                        map["phoneNumber"] =
                                PhoneEditText.getPhoneText(login_et_input!!.text.toString())
                                    .toString()
                        loginPresenter!!.getcode(this@PrepareLoginActivity, map)
                    } else {
                        startActivity(
                            Intent(
                                this@PrepareLoginActivity,
                                LoginByPasswordActivity::class.java
                            )
                        )
                    }
                }
            })
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值