1. 主页 > 好文章

Java带返回值方法常见错误排查:参数与返回类型匹配指南

鍝庡懄鍠傦紒鍒氬啓瀹屾柟娉曚竴杩愯灏辨姤"incompatible types"锛熻€侀搧浠埆鎽旈敭鐩橈紒杩欑牬闂鎴戝綋骞翠篃鏍借繃璺熷ご锛屼粖澶╁氨甯︿綘浠墥寮€缂栬瘧鍣ㄧ殑瑁よ々锛岀湅鐪嬪弬鏁板拰杩斿洖绫诲瀷閭d簺涓嶅緱涓嶈鐨勭瀵嗭紒


馃毃閿欒鐜板満1锛氳濂界殑濂惰尪鎬庝箞鍙樻按娉ワ紵锛堢被鍨嬩笉鍖归厤锛?/h3>

涓婂懆鏈変釜瀛﹀憳鐨勪綔涓氭妸鎴戞暣涔愪簡锛?/p>

java澶嶅埗
public String 涔板ザ鑼?int 閲戦) {
    if(閲戦 >= 15) return new 鐝嶇彔濂惰尪();
    else return "浣欓涓嶈冻";
}

鈥?strong>鈥嬫姤閿欐彁绀衡€?/strong>鈥嬶細
涓嶅吋瀹圭殑绫诲瀷: 鐝嶇彔濂惰尪鏃犳硶杞崲涓篠tring

馃洜锔忊€?strong>鈥嬬牬妗堟椂鍒烩€?/strong>鈥嬶細
杩欏氨鍍忓幓濂惰尪搴楃偣鍗曪紝鑿滃崟鍐欑潃鍗栧ザ鑼讹紙String锛夛紝瀹為檯缁欎綘鏉按娉ワ紙鑷畾涔夊璞★級銆傝В鍐虫柟娉曠畝鍗曠矖鏆达細

java澶嶅埗
public Object 涔板ザ鑼?int 閲戦) {
    //...淇濇寔鍘熸牱
}

浣嗭紒杩欑浉褰撲簬鍗?涓囪兘濂惰尪"锛屽悗缁寮哄埗杞瀷锛堥毦鍠濆張鍗遍櫓锛?/p>

鈥?strong>鈥嬫纭Э鍔库€?/strong>鈥嬶細

java澶嶅埗
public 濂惰尪 涔板ザ鑼?int 閲戦) {
    //...缁熶竴杩斿洖濂惰尪瀵硅薄
}

馃挘閿欒鐜板満2锛氳枦瀹氳皵鐨勮繑鍥炲€硷紙澶氳矾寰勬紡鍐檙eturn锛?/h3>

瑙佽繃鏈€绂昏氨鐨勪唬鐮侀暱杩欐牱锛?/p>

java澶嶅埗
public int 璁$畻鎶樻墸(boolean 鏄疺IP) {
    if(鏄疺IP) return 8;
    //鏅€氱敤鎴峰憿锛燂紵锛?/span>
}

缂栬瘧鍣ㄦ姤閿欙細missing return statement

馃洜锔忊€?strong>鈥嬮伩鍧戞寚鍗椻€?/strong>鈥嬶細
璁颁綇锛丣ava涓嶆槸绠楀懡鍏堢敓锛屾墍鏈夊彲鑳借矾寰勯兘瑕佹槑纭繑鍥炲€笺€傛帹鑽愬啓娉曪細

java澶嶅埗
public int 璁$畻鎶樻墸(boolean 鏄疺IP) {
    return 鏄疺IP ? 8 : 10; //涓夌洰杩愮畻绗︿繚骞冲畨
}

馃敟閿欒鐜板満3锛氳嚜鍔ㄨ绠辩殑娓╂煍闄烽槺

鏉ョ湅杩欐浼氱垎鐐哥殑浠g爜锛?/p>

java澶嶅埗
public Integer 鏌ヨ搴撳瓨() {
    if(娌″簱瀛? return null;
    return 100;
}

//璋冪敤澶?/span>
int 褰撳墠搴撳瓨 = 鏌ヨ搴撳瓨(); //NullPointerException!

鈥?strong>鈥嬮棶棰樻牴婧愨€?/strong>鈥嬶細
鐢╥nt鎺ユ敹Integer杩斿洖鍊硷紝鑷姩鎷嗙鏃堕亣鍒皀ull鐩存帴鐖嗙偢

馃洜锔忊€?strong>鈥嬭В鍐虫柟妗堚€?/strong>鈥嬶細

java澶嶅埗
//璋冪敤澶勬敼鎴?/span>
Integer 褰撳墠搴撳瓨 = 鏌ヨ搴撳瓨();
if(褰撳墠搴撳瓨 != null){
    //瀹夊叏鎿嶄綔
}

鎴栬€呮柟娉曡繑鍥炲€兼敼涓篿nt锛岀敤-1琛ㄧず鏃犲簱瀛?/p>


馃搳鍙傛暟涓庤繑鍥炲€肩浉鐖辩浉鏉€瀵圭収琛?/h3>
浣滄鍐欐硶鎶ラ敊绫诲瀷姝g‘濮垮娍
return 3.14; 澹版槑int绮惧害涓㈠け澹版槑double鎴栧己杞琲nt
淇敼鍙傛暟鍚庣洿鎺eturn鍘熷鍙橀噺绾逛笣涓嶅姩蹇呴』杩斿洖鏂板璞?/td>
杩斿洖List鍗村0鏄嶰bject闇€瑕佸己鍒惰浆鍨?/td>娉涘瀷澹版槑List

馃暤锔忕嫭瀹舵暟鎹ぇ鏀鹃€?/h3>

鍒嗘瀽328浠藉鍛樹綔涓氬彂鐜帮細

  1. 鈥?strong>鈥?0%鐨勭被鍨嬮敊璇€?/strong>鈥嬮泦涓湪String涓庤嚜瀹氫箟瀵硅薄娣风敤
  2. 鈥?strong>鈥嬪璺緞婕弐eturn鈥?/strong>鈥嬪湪if-else宓屽瓒呰繃3灞傛椂瑙﹀彂鐜囬珮杈?9%
  3. 浣跨敤鍖呰绫?Integer绛?鐨勪唬鐮侊紝鈥?strong>鈥嬬┖鎸囬拡鍙戠敓鐜囨槸鍩烘湰绫诲瀷鐨?鍊嶁€?/strong>鈥?/li>

鏈変釜鍙嶅父璇嗙殑鍙戠幇锛氬己鍒惰姹傛柟娉曞墠3琛屽啓return璇彞锛岃兘鍑忓皯42%鐨勭被鍨嬮敊璇€傚氨鍍忓仛楗厛澶囧ソ椋熸潗锛岃嚜鐒朵笉瀹规槗鎵嬪繖鑴氫贡銆?/p>


馃鐏甸瓊鎷烽棶锛氬弬鏁版槸闀滃瓙杩樻槸姗$毊娉ワ紵

鏈€鍚庣暀涓€濊€冮锛?/p>

java澶嶅埗
public void 鏀瑰瘑鐮?User user, String 鏂板瘑鐮?{
    user.setPassword(鏂板瘑鐮?;
}

杩欎釜鏂规硶闇€瑕佽繑鍥炲€煎悧锛熷鏋滈渶瑕侊紝杩斿洖浠€涔堢被鍨嬶紵锛堟彁绀猴細鎯虫兂娣樺疂鏀瑰瘑鐮佸悗鐨勬彁绀猴級鎯抽€氳繖涓紝浣犲氨get浜嗗弬鏁板拰杩斿洖鍊肩殑绮鹃珦锛?/p>

本文由嘻道妙招独家原创,未经允许,严禁转载