Android问题笔记 - kotlin中使用Java接口,报错Parameter specified as non-null is null 快速解决

  • 点击跳转=>Unity3D特效百例
  • 点击跳转=>案例项目实战源码
  • 点击跳转=>游戏脚本-辅助自动化
  • 点击跳转=>Android控件全解手册
  • 点击跳转=>Scratch编程案例
  • 点击跳转=>软考全系列

?关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,交流让学习不再孤单

在这里插入图片描述

?实践过程

这个错误的原因在于,Kotlin语言进行了很多变量形式的检查,避免异常,这就会导致 Java 中一些普通的写法没有做判断,而出现判断异常。

比如 Java 中被 @NotNull 标识的变量。
要确保 Java 的 @NotNull 是不可为空 而 @Nullable 是可为空,在写Kotlin的时候就要弄清要不要带 ? 的变量。

如下案例:

//Kotlin语言调用: 
adapterList[indexAdapter].notifyItemViewChange(adapterList[indexAdapter].treeModel.rootNode)


//Java语言:
public void notifyItemViewChange(@NotNull NodeModel<T> node) {
    if (notifier != null) {
        notifier.onItemViewChange(node);
    }
}

@Override
public void onItemViewChange(NodeModel<?> nodeModel) {
	//这里是会报错的 就是空指针NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter
    adapter.changeItemHolder((TreeViewHolder) getTreeViewHolder(nodeModel));
}

改成下面这样就没问题了

    @Override
    public void onItemViewChange(NodeModel<?> nodeModel) {
        if (adapter != null && nodeModel != null && getTreeViewHolder(nodeModel) != null) 
          adapter.changeItemHolder((TreeViewHolder) getTreeViewHolder(nodeModel));
    }

其实只要有良好的编码习惯,平时业务逻辑会进行各种前提判断都会避免此类的问题。

?其他

?作者:小空和小芝中的小空
?转载说明-务必注明来源:https://zhima.blog.csdn.net/
?这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气?,日后定有一番大作为?!!!旁边有点赞?收藏?今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生文章来源地址https://uudwc.com/A/Gdp2Z

原文地址:https://blog.csdn.net/qq_27489007/article/details/131326430

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月24日 21:41
下一篇 2023年09月24日 21:42