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

如果我更改代码,使变量zString它甚至不会编译:

这就是我在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检查非常失败时相关推荐

  1. python显示安装失败_关于python:安装失败并显示Requirements.txt,但可用于pip安装...

    与使用pip直接安装时相比,在使用requirements.txt时出现一些奇怪的行为. 希望您能对此有所了解. 这可能与未解决的问题相同:pip install -r requirements.tx ...

  2. python用cmd运行失败_解决python在cmd运行时导入包失败,出现错误信息 ModuleNotFoundError: No module named ***...

    1.下图为我的自动化测试工程结构图 我通过运行run.bat批处理文件,调用cmd控制台运行start_run.py来开始我的自动化测试,但是出现如下错误: 大家可能知道我们的工程在IDE(Pycha ...

  3. str绑定值的结尾null字符缺失_关于null == 0该如何运用?

    单纯从这个题目本身来看,没有什么东西,而且这个问题的答案我们通过浏览器就能得到印证.我们今天要说的不是这个问题,而是对于 == 到底是如何运算的? 首先我们来解决这个问题 null == 0 ? 结果 ...

  4. mysql innodb启动失败_关于mysql innodb启动失败无法重启的处理方法讲解

    电脑在使用过程中死机,重启后发现mysql没有启动成功,查看错误日志发现是innodb出现问题导致mysql启动失败. 错误日志$ mysql.server start Starting MySQL ...

  5. htmlimg图片加载失败_动态加载图片失败的默认图显示

    经常碰到这类场景,动态加载图片时,因为一些原因(图片链接不存在啊,图片误删啊,图片路径不对或图片路径为空等等)导致真实图片显示不出来.那么为了提高用户体验,都会显示一个默认图. 动态加载图片失败时,显 ...

  6. matplotlib安装成功但import失败_统信UOS安装失败,deepinv20.1国产操作系统安装成功...

    我一直在等着uos成熟,当我知道这个消息之后,我就赶紧下载了. 但是安装到63%的时候,会卡死不动. 无论是硬盘安装还是u盘安装都不行. 我去网上找教程,官方教程居然让我用虚拟机装? 教程好像在对我说 ...

  7. c# 再次尝试 连接失败_和平精英ios充值失败该怎么办

    和平精英ios充值失败该怎么办?近期有小伙伴说自己用苹果手机充值却显示充值失败,这种情况该怎么解决呢?其实这不是大问题,看看下面的解决办法. 和平精英ios充值失败 和平精英ios充值失败只需要重新填 ...

  8. 初始化mysql的数据库失败_初始化mysql的数据库失败怎么办

    初始化mysql数据库失败的解决办法:首先找到并打开my.ini文件:然后注释掉my.ini文件中的datadir:最后根据提示把UTF8换成UTF8MB4即可. 安装MySQL8,安装时初始化数据库 ...

  9. 读取配置文件失败_还在为Find_Package失败而烦恼吗?

    在学习ubuntu的过程中,经常会遇到以下问题: Could not find a package configuration file provided by "xxx" wit ...

最新文章

  1. 重磅!“全脑介观神经联接图谱”大科学计划中国工作组成立!
  2. 用php+ajax+echarts.js 实现统计每分钟答题曲线图
  3. 关于HashMap容量的初始化,还有这么多学问
  4. oracle数据库编程实验2答案,Oracle数据库-作业2-答案
  5. java九种数据类型以及封装类
  6. MySQL内核月报 2015.01-MySQL · 捉虫动态· replicate filter 和 GTID 一起使用的问题
  7. kotlin android 镜像,【54】Kotlin android Anko 神兵利器
  8. 试题17 方程的解(枚举法)
  9. 出现这6种评估违法状况,征收补偿决定可能被撤销!
  10. 我把朋友圈关掉了235天
  11. (附源码)ssm牙科诊所预约网站 毕业设计 260952
  12. 【编程算法】跳跃游戏ⅠⅡⅢ(Python解法)
  13. win8.1各版本的区别
  14. win10怎么更改c盘用户计算机名,详解win10系统更改c盘用户名文件夹名称的设置技巧...
  15. java重构工具_Piranha(陈旧代码自动重构工具)
  16. 微信小程序如何显示富文本,类似v-html,rich-text
  17. 唯美首页纯静态html引导页
  18. 支付宝的蚂蚁积分用途很多,别不当回事儿,用得好能省很多钱哦!
  19. RL(Chapter 5): Blackjack (二十一点)
  20. java抽象工厂模式_JAVA设计模式-抽象工厂模式

热门文章

  1. nssl1163-小x游世界树【树形dp,二次扫描和换根法】
  2. codeforces1484 B. Restore Modulo(数学)
  3. 【期望】彩色圆环(金牌导航 期望-5)
  4. 【高精】Oliver的成绩(jzoj 2008)
  5. 如何基于Canal 和 Kafka,实现 MySQL 的 Binlog 近实时同步
  6. 深入理解Java ClassLoader及在 JavaAgent 中的应用
  7. JavaFX官方教程(一)之JavaFX概述
  8. 简单介绍Java中Comparable和Comparator
  9. Java中创建String的两道面试题及详解
  10. java中Date与DateFormat的格式输出