背景
每次拿到对象在进行相关方法或属性的时候都要进行如下操作
先判断是否为null
if(obj!=null){
//todo.......
}else{
//todo
}
这样的代码,既繁琐,又影响阅读性,而且一不小心就会报如下错误信息
D:\Java\jdk1.8.0_202\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\lib\idea_rt.jar=55047:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\bin" -Dfile.encoding=UTF-8 -classpath D:\Java\jdk1.8.0_202\jre\lib\charsets.jar;D:\Java\jdk1.8.0_202\jre\lib\deploy.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\access-bridge-64.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\cldrdata.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\dnsns.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\jaccess.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\jfxrt.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\localedata.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\nashorn.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\sunec.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\sunjce_provider.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\sunmscapi.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\sunpkcs11.jar;D:\Java\jdk1.8.0_202\jre\lib\ext\zipfs.jar;D:\Java\jdk1.8.0_202\jre\lib\javaws.jar;D:\Java\jdk1.8.0_202\jre\lib\jce.jar;D:\Java\jdk1.8.0_202\jre\lib\jfr.jar;D:\Java\jdk1.8.0_202\jre\lib\jfxswt.jar;D:\Java\jdk1.8.0_202\jre\lib\jsse.jar;D:\Java\jdk1.8.0_202\jre\lib\management-agent.jar;D:\Java\jdk1.8.0_202\jre\lib\plugin.jar;D:\Java\jdk1.8.0_202\jre\lib\resources.jar;D:\Java\jdk1.8.0_202\jre\lib\rt.jar;D:\nethospital\ProdDev_BackEnd\hospital-service\target\classes;D:\Java\repositories\org\springframework\boot\spring-boot-starter\2.1.3.RELEASE\spring-boot-starter-2.1.3.RELEASE.jar;D:\Java\repositories\org\springframework\boot\spring-boot\2.1.3.RELEASE\spring-boot-2.1.3.RELEASE.jar;D:\Java\repositories\org\springframework\spring-context\5.1.5.RELEASE\spring-context-5.1.5.RELEASE.jar;D:\Java\repositories\org\springframework\boot\spring-boot-autoconfigure\2.1.3.RELEASE\spring-boot-autoconfigure-2.1.3.RELEASE.jar;D:\Java\repositories\org\springframework\boot\spring-boot-starter-logging\2.1.3.RELEASE\spring-boot-starter-logging-2.1.3.RELEASE.jar;D:\Java\repositories\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\Java\repositories\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\Java\repositories\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;D:\Java\repositories\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;D:\Java\repositories\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;D:\Java\repositories\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;D:\Java\repositories\org\springframework\spring-core\5.1.5.RELEASE\spring-core-5.1.5.RELEASE.jar;D:\Java\repositories\org\springframework\spring-jcl\5.1.5.RELEASE\spring-jcl-5.1.5.RELEASE.jar;D:\Java\repositories\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;D:\Java\repositories\org\springframework\cloud\spring-cloud-starter-config\2.1.1.RELEASE\spring-cloud-starter-config-2.1.1.RELEASE.jar;D:\Java\repositories\org\springframework\cloud\spring-cloud-starter\2.1.1.RELEASE\spring-cloud-starter-2.1.1.RELEASE.jar;D:\Java\repositories\org\springframework\cloud\spring-cloud-context\2.1.1.RELEASE\spring-cloud-context-2.1.1.RELEASE.jar;D:\Java\repositories\org\springframework\security\spring-security-rsa\1.0.7.RELEASE\spring-security-rsa-1.0.7.RELEASE.jar;D:\Java\repositories\org\bouncycastle\bcpkix-jdk15on\1.60\bcpkix-jdk15on-1.60.jar;D:\Java\repositories\org\bouncycastle\bcprov-jdk15on\1.60\bcprov-jdk15on-1.60.jar;D:\Java\repositories\org\springframework\cloud\spring-cloud-config-client\2.1.1.RELEASE\spring-cloud-config-client-2.1.1.RELEASE.jar;D:\Java\repositories\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;D:\Java\repositories\com\fasterxml\jackson\core\jackson-databind\2.9.8\jackson-databind-2.9.8.jar;D:\Java\repositories\com\fasterxml\jackson\core\jackson-core\2.9.8\jackson-core-2.9.8.jar;D:\Java\repositories\org\springframework\cloud\spring-cloud-starter-netflix-eureka-client\2.1.1.RELEASE\spring-cloud-starter-netflix-eureka-client-2.1.1.RELEASE.jar;D:\Java\repositories\org\springframework\cloud\spring-cloud-netflix-hystrix\2.1.1.RELEASE\spring-cloud-netflix-hystrix-2.1.1.RELEASE.jar;D:\Java\repositories\org\springframework\boot\spring-boot-starter-aop\2.1.3.RELEASE\spring-boot-starter-aop-2.1.3.RELEASE.jar;D:\Java\repositories\org\springframework\cloud\spring-cloud-netflix-eureka-client\2.1.1.RELEASE\spring-cloud-netflix-eureka-client-2.1.1.RELEASE.jar;D:\Java\repositories\com\netflix\eureka\eureka-client\1.9.8\eureka-client-1.9.8.jar;D:\Java\repositories\org\codehaus\jettison\jettison\1.3.7\jettison-1.3.7.jar;D:\Java\repositories\stax\stax-api\1.0.1\stax-api-1.0.1.jar;D:\Java\repositories\com\netflix\netflix-commons\netflix-eventbus\0.3.0\netflix-eventbus-0.3.0.jar;D:\Java\repositories\com\netflix\netflix-commons\netflix-infix\0.3.0\netflix-infix-0.3.0.jar;D:\Java\repositories\commons-jxpath\commons-jxpath\1.3\commons-jxpath-1.3.jar;D:\Java\repositories\joda-time\joda-time\2.10.1\joda-time-2.10.1.jar;D:\Java\repositories\org\antlr\antlr-runtime\3.4\antlr-runtime-3.4.jar;D:\Java\repositories\org\antlr\stringtemplate\3.2.1\stringtemplate-3.2.1.jar;D:\Java\repositories\antlr\antlr\2.7.7\antlr-2.7.7.jar;D:\Java\repositories\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;D:\Java\repositories\org\apache\commons\commons-math\2.2\commons-math-2.2.jar;D:\Java\repositories\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;D: