null导入失败_当null检查非常失败时
null导入失败
免责声明
在继续之前,我必须指出,当我们对Java进行编程时,本文中描述的技术没有实际目的。 就像填字游戏或拼图。 它主要训练您的大脑进行逻辑思维,可能发展您的Java语言知识甚至您的思维能力。 这就像魔术师执行的把戏。 最后,您意识到什么都没有。 切勿在现实生活的编程中做您可能需要应用的技巧来解决此问题。
问题
最近,我读了一篇描述调试情况的文章 :
if(trouble != null && !trouble.isEmpty()) {System.out.println(“fine here: ” + trouble);}else{System.out.println(“not so fine here: ” + trouble);
}
正在打印:
fine here: null
实际的错误是字符串包含“ null”,也就是字符“ n”,“ u”,“ l”和“ l”。 在现实生活中可能会发生,特别是当您在不检查变量的空值的情况下连接字符串时。
然后我开始考虑其他类似的奇怪代码和调试情况。 我是否可以使变量不仅是带有这些字符的“空”字符串,还是真正为空? 好像疯了吗? 看一下代码:
package com.javax0.blog.nullisnotnull;public class NullIsNotNull {public static void troubled(){String trouble = new String("hallo");Object z = trouble != null && !trouble.toString().isEmpty() ? trouble.toString() : "";if (z == null) {System.out.println("z is really " + z + "?");}}
}
它会打印出:
z is really null?
题。 事实是,您可以创建一个包含public static void main()
的Java类,以便在main()
调用troubled()
方法时将该类作为Java应用程序开始打印。 换句话说:我确实调用了troubled()
方法,解决方案不是main()
打印句子。
在这种情况下,变量z
不仅打印为“ null”,而且实际上为null。
提示
解决方案不应涉及
- 反射
- 字节码操作
- 打电话给JNI
- 特种装载机
- Java代理
- 注释处理器
这些工具太重了。 您不需要这种军械库。
提示#1
如果我更改代码,使变量z
为String
它甚至不会编译:
这就是我在Eclipse中看到的
如果它使您更加困惑,那就对不起。 继续阅读!
提示2
在Java语言中, String
是标识符而不是关键字。 Java语言规范 3.9节可能会提供有关此重要性的更多信息。
提示3
类Object
中的toString()
方法具有返回类型java.lang.String
。 您可能需要阅读我的文章 ,其中涉及类的名称,简单名称和规范名称之间的区别。 这可能会有所启发,并增加文章的点击数。
提示#4
要使用在同一程序包中声明的类,无需导入该程序包。
解
解决方案是在同一包中创建一个名为String
的类。 在这种情况下,编译器将使用此类而不是java.lang.String
。 代码中的三元运算符是简单的魔术师技巧。 从重点出发,有些事情会引起您的注意。 要点是,上述代码中的String不是java.lang.String
。 如果仍然找不到如何创建把戏类的方法,请单击折叠的源代码块以全面了解它:
package com.javax0.blog.nullisnotnull;class String {private java.lang.String jString;private boolean first = true;public String(java.lang.String s) {jString = s;}public boolean isEmpty() {return jString.isEmpty();}@Overridepublic java.lang.String toString() {if( first ){first = false;return jString;}return null;}public static void main(java.lang.String[] args) {NullIsNotNull.troubled();}
}
翻译自: https://www.javacodegeeks.com/2014/11/when-null-checking-miserably-fails.html
null导入失败
null导入失败_当null检查非常失败时相关推荐
- python显示安装失败_关于python:安装失败并显示Requirements.txt,但可用于pip安装...
与使用pip直接安装时相比,在使用requirements.txt时出现一些奇怪的行为. 希望您能对此有所了解. 这可能与未解决的问题相同:pip install -r requirements.tx ...
- python用cmd运行失败_解决python在cmd运行时导入包失败,出现错误信息 ModuleNotFoundError: No module named ***...
1.下图为我的自动化测试工程结构图 我通过运行run.bat批处理文件,调用cmd控制台运行start_run.py来开始我的自动化测试,但是出现如下错误: 大家可能知道我们的工程在IDE(Pycha ...
- str绑定值的结尾null字符缺失_关于null == 0该如何运用?
单纯从这个题目本身来看,没有什么东西,而且这个问题的答案我们通过浏览器就能得到印证.我们今天要说的不是这个问题,而是对于 == 到底是如何运算的? 首先我们来解决这个问题 null == 0 ? 结果 ...
- mysql innodb启动失败_关于mysql innodb启动失败无法重启的处理方法讲解
电脑在使用过程中死机,重启后发现mysql没有启动成功,查看错误日志发现是innodb出现问题导致mysql启动失败. 错误日志$ mysql.server start Starting MySQL ...
- htmlimg图片加载失败_动态加载图片失败的默认图显示
经常碰到这类场景,动态加载图片时,因为一些原因(图片链接不存在啊,图片误删啊,图片路径不对或图片路径为空等等)导致真实图片显示不出来.那么为了提高用户体验,都会显示一个默认图. 动态加载图片失败时,显 ...
- matplotlib安装成功但import失败_统信UOS安装失败,deepinv20.1国产操作系统安装成功...
我一直在等着uos成熟,当我知道这个消息之后,我就赶紧下载了. 但是安装到63%的时候,会卡死不动. 无论是硬盘安装还是u盘安装都不行. 我去网上找教程,官方教程居然让我用虚拟机装? 教程好像在对我说 ...
- c# 再次尝试 连接失败_和平精英ios充值失败该怎么办
和平精英ios充值失败该怎么办?近期有小伙伴说自己用苹果手机充值却显示充值失败,这种情况该怎么解决呢?其实这不是大问题,看看下面的解决办法. 和平精英ios充值失败 和平精英ios充值失败只需要重新填 ...
- 初始化mysql的数据库失败_初始化mysql的数据库失败怎么办
初始化mysql数据库失败的解决办法:首先找到并打开my.ini文件:然后注释掉my.ini文件中的datadir:最后根据提示把UTF8换成UTF8MB4即可. 安装MySQL8,安装时初始化数据库 ...
- 读取配置文件失败_还在为Find_Package失败而烦恼吗?
在学习ubuntu的过程中,经常会遇到以下问题: Could not find a package configuration file provided by "xxx" wit ...
最新文章
- 重磅!“全脑介观神经联接图谱”大科学计划中国工作组成立!
- 用php+ajax+echarts.js 实现统计每分钟答题曲线图
- 关于HashMap容量的初始化,还有这么多学问
- oracle数据库编程实验2答案,Oracle数据库-作业2-答案
- java九种数据类型以及封装类
- MySQL内核月报 2015.01-MySQL · 捉虫动态· replicate filter 和 GTID 一起使用的问题
- kotlin android 镜像,【54】Kotlin android Anko 神兵利器
- 试题17 方程的解(枚举法)
- 出现这6种评估违法状况,征收补偿决定可能被撤销!
- 我把朋友圈关掉了235天
- (附源码)ssm牙科诊所预约网站 毕业设计 260952
- 【编程算法】跳跃游戏ⅠⅡⅢ(Python解法)
- win8.1各版本的区别
- win10怎么更改c盘用户计算机名,详解win10系统更改c盘用户名文件夹名称的设置技巧...
- java重构工具_Piranha(陈旧代码自动重构工具)
- 微信小程序如何显示富文本,类似v-html,rich-text
- 唯美首页纯静态html引导页
- 支付宝的蚂蚁积分用途很多,别不当回事儿,用得好能省很多钱哦!
- RL(Chapter 5): Blackjack (二十一点)
- java抽象工厂模式_JAVA设计模式-抽象工厂模式
热门文章
- nssl1163-小x游世界树【树形dp,二次扫描和换根法】
- codeforces1484 B. Restore Modulo(数学)
- 【期望】彩色圆环(金牌导航 期望-5)
- 【高精】Oliver的成绩(jzoj 2008)
- 如何基于Canal 和 Kafka,实现 MySQL 的 Binlog 近实时同步
- 深入理解Java ClassLoader及在 JavaAgent 中的应用
- JavaFX官方教程(一)之JavaFX概述
- 简单介绍Java中Comparable和Comparator
- Java中创建String的两道面试题及详解
- java中Date与DateFormat的格式输出