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

news2025/2/24 23:08:46
  • 点击跳转=>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/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1037491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习西瓜书+南瓜书吃瓜教程学习笔记第五章神经网络

来自吃瓜教程】《机器学习公式详解》&#xff08;南瓜书&#xff09;与西瓜书公式推导直播合集第五章神经网络 和周志华老师的机器学习西瓜书 以下是我的学习笔记&#xff1a; 神经网络&#xff1a; 神经网络是由具有适应性的简单单元组成的广泛并行互联的网络&#xff0c;它的…

MySQL常用日期查询统计总结

MySQL常用日期统计总结 一、准备工作 表结构如下&#xff1a; CREATE TABLE order_info (id int NOT NULL AUTO_INCREMENT,info varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,time datetime NULL DEFAULT NULL,PRIMARY KEY (id) USING BTRE…

联想电脑打开exe提示要在Microsoft Store中搜索应用

问题&#xff1a; 你需要为此任务安装应用。 是否要在Microsoft Store中搜索一个&#xff1f; 如图&#xff1a; 出现此情况&#xff0c;仅需要做如下操作&#xff0c;在要打开的exe文件上右键&#xff0c;属性&#xff1a; 如图箭头所示&#xff0c;点击“解除锁定”出现对钩&…

【软件设计师-从小白到大牛】上午题基础篇:第二章 操作系统

文章目录 前言章节提要一、进程管理1、进程的状态2、前趋图3、进程的同步与互斥4、PV操作6、PV操作与前趋图7、死锁问题进程资源图&#xff08;补充&#xff09;真题链接 二、存储管理1、分区存储组织2、页式存储组织3、段式存储组织4、段页式存储组织5、快表6、页面置换算法单…

linux 约束

linux 约束 1、约束的概念1.1什么是约束1.2约束的优劣势 2、约束的作用3、约束的分类4、约束的应用场景5、约束的管理5.1创建5.2查看5.3插入5.4删除 6、总结 1、约束的概念 1.1什么是约束 在关系型数据库中&#xff0c;约束是用于限制表中数据规则的一种机制。它可以确保表中…

第一百五十三回 如何实现滑动窗口

文章目录 概念介绍实现方法示例代码 我们在上一章回中介绍了自定义组件实现游戏摇杆相关的内容&#xff0c;本章回中将介绍 如何实现滑动窗口.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在本章回中介绍的滑动窗口表示在屏幕底部向上滑动时弹出一个窗口&a…

数量关系(刘文超)

解题技巧 代入排除法 数字特性法 整除特性 比例倍数特性&#xff08;找比例&#xff0c;比例不明显时找等式&#xff09; 看不懂式子时&#xff0c;把所有的信息像表格一样列出来 看不懂式子时&#xff0c;把所有的信息像表格一样列出来

智慧公厕是提升公共厕所管理服务能力的创新举措

在城市化进程加速的今天&#xff0c;公共厕所的管理问题成为让人头疼的难题。随着智慧科技的发展&#xff0c;智慧公厕应运而生&#xff0c;为提升公共厕所综合管理服务能力提供了新思路和解决方案。本文将以智慧公厕领先厂家广州中期科技有限公司&#xff0c;大量精品案例项目…

基于STM32和LORA组网的养老院智能控制系统设计(第十八届研电赛)

一、整体功能 数据采集从机1采集烟雾浓度&#xff0c;PM2.5浓度&#xff0c;甲醛浓度&#xff1b;从机2采集温湿度&#xff0c;光照强度&#xff0c;噪声强度&#xff0c;老人体感温度&#xff1b;从机3收集厨房饮用水的TDS值。3个数据采集从机将采集到的数据显示在本地OLED屏…

idea2023.2.2修改代码区中文字体

使用idea编译代码时&#xff0c;中文默认使用宋体进行显示&#xff0c;可通过以下方式进行修改。 Editor -> Font -> Fallback font

“微信小号”注册攻略!无需绑定手机号也能注册一个新微信

微信作为移动互联时代最重要的App之一&#xff0c;绝大多数人的生活、工作都离不开它。 随着软件普及率的增加&#xff0c;不少人苦恼于工作、生活都在一个微信号上。因此&#xff0c;不少用户会选择注册用于工作和生活的两个单独微信账号来使用。 然而&#xff0c;此前一个手机…

Spring Cloud阿里的nacos注册中心的使用以及Feign远程调用

原文档 https://github.com/alibaba/spring-cloud-alibaba/blob/2022.x/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme-zh.md 注册中心nacos使用步骤 添加依赖 <!-- 服务注册/发现--><dependency><groupId>com.al…

Java中如何将String类型的2023年09月21日这个值变成DATE相关的类型

Java中如何将String类型的2023年09月21日这个值变成DATE 可以通过使用Java中的SimpleDateFormat类完成。以下是一个例子&#xff1a; import java.text.SimpleDateFormat; import java.text.ParseException; import java.util.Date;public class Main {public static void ma…

modbusTCP【codesys】

1添加控制器【控制器】&#xff1a; 右击左侧树型菜单【Device】→选择【添加设备】&#xff0c;在弹出对话框中下拉选择【以太网适配器】下的【Ethernet】&#xff0c;最后点击【添加设备】。 注意固件能支持的版本。我的是3.5.17 2添加主站【主站】 3添加从站【从站】 双…

如何将原始按照word为单位索引标识的数据集修改为以char单位

目录 问题描述&#xff1a; 问题解决&#xff1a; 问题描述&#xff1a; 原始数据集中&#xff0c;数据的标注是以word为单位&#xff0c;且计数从1开始的。如下图&#xff1a; 如何修改为以char为单位的&#xff0c;从0开始计数的数据格式&#xff1a; 问题解决&#xff1a;…

网站接公网+配置域名访问宝宝级教程

网站接入公网并配置域名访问【详细教程】 安装Nginx上传网页文件配置Nginx腾讯云配置域名映射接入公网备案流程 本教程将以腾讯云服务器和腾讯云域名为例&#xff0c;介绍如何快速将网站接入公网并配置域名访问。我们将使用xshell工具进行操作&#xff0c;并涵盖安装nginx、上传…

NSS [HXPCTF 2021]includer‘s revenge

NSS [HXPCTF 2021]includer’s revenge 题目描述&#xff1a;Just sitting here and waiting for PHP 8.1 (lolphp). 题目源码&#xff1a;&#xff08;index.php&#xff09; <?php ($_GET[action] ?? read ) read ? readfile($_GET[file] ?? index.php) : inclu…

《JVM》第二篇 JVM内存模型深度剖析与优化

目录 一. JDK体系结构与跨平台特性介绍二. JVM内存模型深度剖析三. 从Jvisualvm来研究下对象内存流转模型四. GC Root与STW机制五. JVM参数设置通用模型 一. JDK体系结构与跨平台特性介绍 二. JVM内存模型深度剖析 按照线程是否共享来划分 TLAB(Thread Local Allocation Buffe…

USB总线-Linux内核USB3.0主机控制器驱动框架分析(十二)

1.概述 如下图所示&#xff0c;Linux内核中USB主机体系结构由五部分组成&#xff0c;分别为Application Software、USB Class Driver、USB Core(USB Driver)、USB Host Controller Driver、USB Host Controller。应用程序处于用户空间&#xff0c;通过系统调用访问Class Drive…

C进阶-数据的存储

数据类型介绍 内置类型&#xff1a; //数据类型中的内置类型 // char //字符数据类型 // short //短整型 // int //整型 // long //长整型 // long long //更长的整型 // float //单精度浮点数 // double //双精度浮点数 //数据类型中的内置类型 单位是字节 // char //字…