问题1

在看  SpringMVC源码剖析(五)-消息转换器HttpMessageConverter  的时候,在 org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor 中看到如下代码:

protected AbstractMessageConverterMethodProcessor(List<HttpMessageConverter<?>> converters) {
this(converters, (ContentNegotiationManager)null);
}

一时间没有反应过来为什么要强转null。

因为之前测试过,null 强转之后,就可以调用相应类的静态方法。一时间就想岔了---特别是没再注意这里是构造方法。

上网求助,有人回复一针见血,这就是为了区别不同的构造方法。

因为,如果有构造方法如下:

public class X {
X(A a, B b){ ... };
X(A a, C c){ ... };
}

那么,调用 X( a, null ) 时,就不知道是哪一个构造方法了!

所以,这时就需要强转一下,以便区分。

问题2

跟同事聊起来iOS解析json遇到null就会崩溃的问题。

虽然我坚定的认为这是iOS的解析工具太弱--毕竟json是通用格式,但是问题还是需要解决的。

简单的办法就是使用Jackson标注实体类,忽略值为null的属性。

@JsonInclude(Include.NON_NULL) 

参考

jackson 实体转json 为NULL或者为空不参加序列化

SpringMVC源码剖析(五)-消息转换器HttpMessageConverter

ios中json解析出现的null问题

散货:null 强转 和 iOS null崩溃的更多相关文章

  1. 关于ios “<null>”的异常处理

    在iOS开发过程中经常需要与服务器进行数据通讯,但是在数据接通过程中会出现:null "<null>"等问题导致莫名其妙的崩溃. 相信你一定会写各种判断来处理这些异常, ...

  2. java里null强转为某个类会报错吗?

    1.定义一个User类如下: /** * @author lizhibiao * @date 2018/11/27 17:21 */public class User{ private String ...

  3. JAVA中对null进行强制类型转换(null可以强转为任意对象,并执行对象的静态方法)

    今天很好奇,对null进行强转会不会抛错.做了如下测试得到的结果是, 如果把null强转给对象,是不会抛异常的,本身对象是可以为null的. 但是如果是基本类型,比如 int i = (Integer ...

  4. 为什么获取的System.Web.HttpContext.Current值为null,HttpContext对象为null时如何获取程序(站点)的根目录

    ASP.NET提供了静态属性System.Web.HttpContext.Current,因此获取HttpContext对象就非常方便了.也正是因为这个原因,所以我们经常能见到直接访问System.W ...

  5. JS中NULL和undifined区别及NULL的作用

    1.博客地址:http://www.cnblogs.com/eastday/archive/2010/03/03/1677324.html 2.参考地址2:https://www.zhihu.com/ ...

  6. 关于 JavaScript 的 null 和 undefined,判断 null 的真实类型

    null.undefined 博客地址: https://ainyi.com/39 undefined:表示一个变量最原始的状态,而非人为操作的结果 null:表示一个对象被人为的重置为空对象,而非一 ...

  7. eclipse 中运行 Hadoop2.7.3 map reduce程序 出现错误(null) entry in command string: null chmod 0700

    运行map reduce任务报错: (null) entry in command string: null chmod 0700 解决办法: 在https://download.csdn.net/d ...

  8. isset、empty、var==null、is_null、var===null详细理解

    //isset: 判断变量是否被初始化 //它并不会判断变量是否为空,并且可能用来判断数组中元素是否被定义 //听说在数组用isset与array_key_exists高出4倍 $a = " ...

  9. AndroidStudio编译错误:Error: null value in entry: blameLogFolder=null

    今天写项目的时候,电脑开了个WiFi热点,然后这个热点和window驱动不兼容,有时候会导致电脑重启,重启之后AndroidStudio编译就报错了, Error: null value in ent ...

随机推荐

  1. MAC 上搭建lua

    下载和安装lua:(转自这里) 1.  下载最新版的lua-5.3.1.tar.gz 请点击(http://www.lua.org/ftp/),然后解压  2. 执行"终端"进入到 ...

  2. HTML - SELECT默认选中

    除了在option中定义属性selected = "selected",还可以 <select defaultValue='2'> <option value=& ...

  3. 模拟HTTP请求获取返回值

    package org.jeecgframework.core.util; import java.io.BufferedReader; import java.io.IOException; imp ...

  4. [Codility] CommonPrimeDivisors

    A prime is a positive integer X that has exactly two distinct divisors: 1 and X. The first few prime ...

  5. .NET Remoting中的通道注册

    今天我的同事使用Remoting注册一个新通道.奇怪的是,通道始终无法注册,总是报告异常“该通道已被占用”.我明白这个异常出现的原因,但不明白的是此时系统并未使用任何一个通道,为何会有这个异常呢?即使 ...

  6. 【Android】3.2 基本地图功能

    分类:C#.Android: 日期:2016-02-04 3.2 示例2--基本地图功能 一.简介 1.地图 地图展示:普通地图(2D,3D).卫星图和实时交通图. 地图操作:可通过接口或手势控制来实 ...

  7. Base64转码和解码的帮助类

    /** * 将字符串进行Base64编码 * * @param s 被编码的字符串 * @return 编码后的字符串 */ public static String encoderBASE64(St ...

  8. express 设置node_env的环境变量

    设置process.env.NODE_ENV的环境变量可以用以下2种方式: //在你的app.js文件中设置 process.env.NODE_ENV = 'development'; //在pack ...

  9. angular学习笔记(七)-迭代3

    每个迭代项中还有以下三个变量: $first: 判断是否是迭代第一项,如果是,得到true,如果不是,得到false $middle: 判断是否迭代中间项(既不是第一项也不是最后一项的都是中间项),如 ...

  10. 解决MAC下ctags -R无效的问题

    MAC下自带了ctags,与我们常用的是不同的. 我们需要去重新下载一个ctags并重新安装 1.去http://ctags.sourceforge.net/下载Ctags的最新版本源代码 2.tar ...