当前位置: 首页 > 后端技术 > Java

阿里开发手册为什么要求POJO类必须使用封装类型?NPE问题预防

时间:2023-04-02 09:49:59 Java

灏侀潰锛氬鏍$殑绉嬪ぉ鑳屾櫙锛氫箣鎵€浠ュ啓杩欎釜鏄洜涓鸿繖涓ゅぉ姝eソ鐪嬪埌浜嗐€傝櫧鐒朵竴鐩撮兘鏈夐樋閲屽反宸寸殑Java寮€鍙戞墜鍐岋紝鐪嬩簡寰堝閬嶏紝浣嗕竴鐩存病鏈夊叧娉ㄨ繃銆傝繖閬撻馃槀灞炰簬閭g鐪嬭繃浣嗘槸娌$湅瀹岀殑浜吼煈颁竴璧锋潵鐪嬬湅鍚ю煆俬xdm锛屾垜涓嶄細鍐欑煭绡囸煒紝浣嗘槸浣犵湅鎴戝啓浜嗕竴绡囧悧寰堝锛岃繕鏄緢瀹炵敤鐨剈p锛岀粰涓禐馃憤銆傝鍦ㄨ繖閲屽枬xdm馃イ1.鍓嶈█馃殨浠婂ぉ鍦ㄥ啓AdvertVO绫荤殑鏃跺€欙紝id鐩存帴缁欎簡涓€涓猯ong锛屽苟娌℃湁浣跨敤灏佽绫诲瀷锛岀劧鍚庣洿鎺ュ湪idea閲岄潰鐨凙libabaJavaCodingGuidelines鎻掍欢缁欎簡涓暱闀跨殑鐪嬮粍鑹叉尝娴嚎锛孉LT+ENTER锛岄樋閲屽反宸碕ava寮€鍙戞墜鍐屼腑鎻愮ず璇达細鍩烘湰鏁版嵁绫诲瀷鍜寃rapper鏁版嵁绫诲瀷鐨勪娇鐢ㄦ爣鍑嗗涓嬶細1锛夋墍鏈塒OJO绫诲睘鎬у繀椤讳娇鐢╳rapper鏁版嵁绫诲瀷銆?)RPC鏂规硶鐨勮繑鍥炲€煎拰鍙傛暟蹇呴』浣跨敤鍖呰鏁版嵁绫诲瀷銆?锛夊缓璁墍鏈夊眬閮ㄥ彉閲忛兘浣跨敤鍩烘湰鏁版嵁绫诲瀷銆傛敞鎰忥細POJO绫诲睘鎬ф病鏈夊垵鍊硷紝鎻愰啋鐢ㄦ埛闇€瑕佷娇鐢ㄦ椂蹇呴』鏄惧紡璧嬪€笺€備换浣昇PE闂鎴栧瓨鍌ㄦ鏌ョ敱鐢ㄦ埛淇濊瘉銆傚垰寮€濮嬬湅鐨勬椂鍊欏苟娌℃湁瀹屽叏鐞嗚В鍏朵腑鐨勬剰鎬濓紙鍙兘鏄垜鏈夌偣鑿滈笩锛屾病缁忓巻杩囪繖鏍风殑鍦烘櫙锛夛紝鐒跺悗涓轰簡寮勬槑鐧藉績涓殑灏忕枒鎯戰煒傦紝璁╀竴涓畝鍗曠殑渚嬪瓙馃憞鏉ョ悊瑙e拰鐞嗚В锛岀劧鍚庤璇村疄闄呭満鏅拰浼氫骇鐢熺殑鍗卞銆?.渚嬪瓙馃浀publicclassMain{privatestaticIntegera1;绉佹湁闈欐€乮nta2锛涚浜洪潤鎬佸竷灏攂1锛涚鏈夐潤鎬佸竷灏斿€糱2锛沺ublicstaticvoidmain(String[]args){System.out.println("Integer==>a1:"+a1);System.out.println("int==>a2:"+a2);System.out.println("甯冨皵鍊?=>b1:"+b1);System.out.println("甯冨皵鍊?=>b2:"+b2);}/***Result:*Integer==>a1:null*int==>a2:0*Boolean==>b1:null*boolean==>b2:false*/}褰撴垜浠病鏈夎祴鍊肩粰鎵€鏈夊寘瑁呭櫒绫诲瀷锛屽畠浠兘浼氱洿鎺ラ粯璁や负绌哄€硷紝鑰屽熀鏈被鍨嬩細鍒濆鍖栦竴涓粯璁ゅ€笺€備篃灏辨槸璇村皝瑁呯被鍨嬮粯璁ゅ€间负null锛岃€屽熀鏈暟鎹被鍨嬮粯璁ゅ€间负鍥哄畾鍊硷紝姣斿boolean涓篺alse锛宐yte锛宻hort锛宨nt锛宭ong涓?锛宖loat涓?.0f锛孍TC銆?馃懆鈥嶐煉诲彲鑳絰dm閫氬父浼氭敞鎰忓埌锛屼絾娌℃湁瀹屽叏娉ㄦ剰鍒帮紝浣跨敤鍘熷绫诲瀷鍜屽寘瑁呯被鍨嬩箣闂寸殑鍖哄埆銆傚厛璇村満鏅柟闈㈢殑鍖哄埆锛氿煈┾€嶐煆?.鍦烘櫙馃洬銆愭渚嬨€戯細鏁版嵁搴撴煡璇㈢粨鏋滃彲鑳戒负null锛屽洜涓鸿嚜鍔ㄦ媶绠憋紝鎺ユ敹鍩烘湰鏁版嵁绫诲瀷鏈塏PE椋庨櫓銆傦紙涓嬮潰瑙i噴NPE锛夈€愬弽渚嬨€戯細鏌愪笟鍔$殑浜ゆ槗鎶ヨ〃鏄剧ず浜ゆ槗鎬婚鐨勬定璺屾儏鍐碉紝鍗虫璐焫%锛屽叾涓瓁涓哄熀鏈暟鎹被鍨嬨€傚綋璋冪敤RPC鏈嶅姟涓嶆垚鍔熸椂锛岃繑鍥為粯璁ゅ€硷紝椤甸潰鏄剧ず涓?%锛屼笉鍚堢悊锛屽簲璇ユ樉绀轰负鐮存姌鍙?銆傚洜姝わ紝灏佽鏁版嵁绫诲瀷鐨勭┖鍊煎彲浠ヨ〃绀洪檮鍔犱俊鎭紝渚嬪锛氳繙绋嬭皟鐢ㄥけ璐ャ€佸紓甯搁€€鍑恒€?)鍦烘櫙涓€鉀靛啀涓句釜鎵h垂鐨勪緥瀛愩€傛垜浠鍦ㄥ埗浣滀竴涓垂鐢ㄦ墸闄ょ郴缁熴€傚綋deduction闇€瑕佷粠澶栭儴瀹氫环绯荤粺涓鍙栦竴涓垂鐜囧€兼椂锛屾垜浠湡鏈涜繖涓帴鍙g殑杩斿洖鍊间細鍖呭惈涓€涓熀浜庢诞鐐规暟鐨勮垂鐜囧瓧娈点€傚綋鎴戜滑寰楀埌杩欎釜鍊肩殑鏃跺€欙紝鎴戜滑鐢ㄥ叕寮忥細閲戦*璐圭巼=鎵嬬画璐规潵璁$畻锛屾墸闄よ绠楃粨鏋溿€傚鏋滆璐圭郴缁熷紓甯革紝鍙兘浼氳繑鍥炰竴涓粯璁ゅ€笺€傚鏋滃瓧娈典负Double绫诲瀷锛屽垯榛樿鍊间负null锛屽鏋滃瓧娈典负double绫诲瀷锛屽垯榛樿鍊间负0.0銆傚鏋滄墸璐圭郴缁熸病鏈夊rate鐨勮繑鍥炲€煎仛鐗规畩澶勭悊锛岃绠楀緱鍒扮┖鍊间細鐩存帴鎶ラ敊闃诲绋嬪簭銆傚鏋滃緱鍒?.0锛屽彲鑳界洿鎺ョ畻鍑烘潵锛屾帴鍙d负0涔嬪悗鍐嶆墸鎵嬬画璐癸紝杩欎釜寮傚父鏄劅鐭ヤ笉鍒扮殑銆傛湁浜鸿锛岄偅鎴戝彲浠ュ0.0杩涜鐗规畩鍒ゆ柇锛屽鏋滄槸0锛屾垜涔熷彲浠ュ睆钄芥帀鎶ラ敊銆傜劧鑰岃繖鏃跺€欏嚭鐜颁簡涓€涓棶棰橈紝allowedrate涓?鐨勫満鏅浣曞鐞嗭紵锛堜緥瀛愬涓嬶級灏忕粨锛氬熀鏈被鍨嬬殑浣跨敤鍙兘浼氬湪涓€瀹氱▼搴︿笂澧炲姞绯荤粺鐨勫鏉傚害锛屽潙瓒婃潵瓒婂銆傝繕鏈夎繖绉嶄娇鐢ㄥ皝瑁呯被鍨嬫潵瀹氫箟鍙橀噺鐨勬柟寮忥紝閫氳繃寮傚父鏉ラ樆濉炵▼搴忕殑杩愯锛屽彲浠ョ珛椹垽鏂负姝ょ被绾夸笂闂銆備絾鏄鏋滄垜浠娇鐢ㄥ熀鏈暟鎹被鍨嬶紝绯荤粺鍙兘浼氳涓烘病鏈夊紓甯革紝缁х画杩愯銆傚彧鑳借鍔ㄦ祴璇曪紝鑰屼笖濡傛灉绾夸笂鍑虹幇杩欑闂锛屾垜瑙夊緱鍙兘鈥︹€︽垜鏄庣櫧浜嗐€?)鍦烘櫙2馃寙绠€鍗曟潵璇达紝濡傛灉鎴戜滑鑷畾涔変竴涓猄tudent绫伙紝鍏朵腑涓€涓睘鎬у氨鏄痵core鍒嗘暟銆傚鏋滅敤Integer浠f浛int鏉ュ畾涔夛紝瀛︾敓鍙兘涓嶅弬鍔犺€冭瘯锛屽€间负null锛屼篃鍙兘閫氳繃鑰冭瘯锛屼絾鑰冭瘯鎴愮哗涓?锛屽垯鍊间负0銆俻ublicclassStudent{privateInteger鍒嗘暟;privateintscore;}璇锋敞鎰忥細杩欎袱涓〃杈惧紡鐨勭姸鎬佹槑鏄句笉鍚屻€傚鏋滄垜浠娇鐢ㄥ寘瑁呯被鍨嬶紝null琛ㄧず涓嶆祴璇曪紝0琛ㄧず0鍒嗭紱浣嗘槸濡傛灉鎴戜滑浣跨敤鍩烘湰绫诲瀷锛岃繖涓ょ鎯呭喌鏄竴鏍风殑锛屾棤娉曞尯鍒嗐€?.NPE闂馃椊銆愭帹鑽愩€戦槻姝PE鏄▼搴忓憳鐨勫熀鏈慨鍏汇€傛敞鎰廚PE鍙戠敓鐨勫満鏅細NPE鏄寚瀵瑰熀鏈被鍨嬬殑鏁版嵁杩斿洖绌哄€笺€傞槻姝PE鏄▼搴忓憳鐨勫熀鏈慨鍏汇€傛墍鏈塏PE鍦烘櫙锛氳繑鍥炵被鍨嬩负鍩烘湰鏁版嵁绫诲瀷锛宺eturn鍖呰璇ユ暟鎹被鍨嬬殑瀵硅薄鏃讹紝鑷姩鎷嗙鍙兘浼氫骇鐢烴PE銆俻ublicintf(){杩斿洖鏁存暟瀵硅薄锛涘鏋滀负null锛屽畠浼氳嚜鍔ㄦ媶绠卞苟鎶涘嚭NPE銆傛暟鎹簱鐨勬煡璇㈢粨鏋滃彲鑳戒负绌恒€傚嵆浣块泦鍚堜腑鐨勫厓绱犱负NotEmpty锛屾绱㈠埌鐨勬暟鎹厓绱犱篃鍙兘涓虹┖銆傝繙绋嬭皟鐢ㄨ繑鍥炲璞℃椂锛岄渶瑕佽繘琛岀┖鎸囬拡鍒ゆ柇锛岄槻姝PE銆傚浜嶴ession涓幏鍙栫殑鏁版嵁锛屽缓璁繘琛孨PE妫€鏌ワ紝閬垮厤绌烘寚閽堛€傜骇鑱旇皟鐢╫bj.getA().getB().getC()锛涗竴绯诲垪鐨勮皟鐢ㄥ緢瀹规槗鍑虹幇NPE銆傛渚嬶細浣跨敤JDK8鐨凮ptional绫绘潵闃叉NPE闂銆備簡瑙p煈塉DK8鍙€夌被5.鑷█鑷馃殢澶у濂斤紝鎴戞槸鍗氫富瀹佸湪绾細segmentfault鐨勯椤点€傚笇鏈涜繖绡囨枃绔犺兘璁╀綘鏈夋墍鏀惰幏锛侊紒锛佺鎰挎垜浠細鐩歌锛屾湁鎵€鎴愬氨銆傛杩庡ぇ瀹朵竴璧疯璁洪棶棰橉煒侊紝韬轰笅馃泴鍙傝€冿細闃块噷宸村反Java寮€鍙戞墜鍐?/p>

最新推荐
猜你喜欢