kotlin和java混用 空安全的坑

本文探讨了在Kotlin中调用Java类可能遇到的空安全问题,特别是在没有明确标注`@nullable`时。同时,通过示例说明了使用Gson库时,即使实体类属性定义为非空,也可能在实际运行时遇到空值。建议开发者在混用Kotlin和Java时,不应完全依赖IDE的提示,而应自行进行空值检查。并提出了解决方案,即在使用Gson解析时,通过反射将类型为String且值为null的属性赋值为""。
摘要由CSDN通过智能技术生成
第一种直接引用Java类,隐蔽指数 Mid

再android studio中,使用kotlin 调用一个会返回空的java函数, 是不会提示空安全的,只有加上@nullable之后才会提示。

public static <T> T jsonToObj(String json, Class<T> tClass) {
    if (TextUtils.isEmpty(json) || tClass == null) {
        return null;
    }
    …
    …
    …
    return item;
}

这样直接调用是不会提示的

val entity = GsonUtil.jsonToObj("", Entity::class.java)
entity.let {}//这里没有空安全提示,但是确实会返回空

所以应该加上@nullable

@nullable
public static <T> T jsonToObj(String json, Class<T> tClass) {}

这样就会提示空安全了。
所以kotlin调用没有被标记nullable的函数一定要当心!

在这里插入图片描述

第二种 使用一些库,比如Gson,隐蔽指数 Max

我们定义的实体类是可以定义为非空类型的,比如

da
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值