新聞中心
本篇內(nèi)容介紹了“ABAP和Java里關(guān)于DEFAULT機(jī)制的語(yǔ)言特性是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站與策劃設(shè)計(jì),榮成網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:榮成等地區(qū)。榮成做網(wǎng)站價(jià)格咨詢:028-86922220ABAP 740的新語(yǔ)法:
上圖的代碼相當(dāng)于:
DATA: ls_data LIKE LINE OF it_data. READ TABLE it_data INTO ls_data WITH KEY object_ext = cl_crm_prodil_bo_names=>gc_prod_root. CALL METHOD add_data EXPORTING ir_child_object = ir_root_object is_data = ls_data.
由此可見新語(yǔ)法比較簡(jiǎn)潔,能少寫3行代碼。但是這樣有一個(gè)缺陷,在新語(yǔ)法下如果it_data內(nèi)表內(nèi)不存在object_ext的值為cl_crm_prodil_bo_names=>gc_prod_root的記錄,就會(huì)終止程序執(zhí)行,拋出異常CX_SY_ITAB_LINE_NOT_FOUND.
針對(duì)這種情況,ABAP也有對(duì)應(yīng)的解決方案。
下圖的第17行會(huì)拋出異常,而19行不會(huì),從語(yǔ)義上容易理解:如果內(nèi)表lt_data里不存在name為Spring2的記錄,則返回開發(fā)者使用DEFAULT關(guān)鍵字指定的一個(gè)結(jié)構(gòu)作為默認(rèn)值。
在Java 8也有類似機(jī)制。為了避免臭名昭著的NullPointerException,Java開發(fā)人員在使用對(duì)象的實(shí)例方法之前,需要檢查對(duì)象實(shí)例是否不為null:
if( xx != null ){ xx.doSomething(); }
在Java 8里,在包java.util里提供了一個(gè)新的工具類Optional,看看它的用法。
第11行的filter方法,語(yǔ)義上應(yīng)該返回一個(gè)null,因?yàn)槲以诘?0行初始化的字符串常量的長(zhǎng)度顯然大于6. 但是調(diào)用這個(gè)filter方法的對(duì)象是一個(gè)Optional對(duì)象,所以最終filter方法最終也返回一個(gè)Optional對(duì)象,這個(gè)對(duì)象包裹了一個(gè)null。如下圖調(diào)試器里所示:
第14行執(zhí)行的結(jié)果會(huì)打印出orElse里指定的值,此處orElse的思路和上述介紹的ABAP里的DEFAULT關(guān)鍵字是一致的。
這個(gè)Optional工具類的實(shí)現(xiàn)也很簡(jiǎn)易,orElse僅僅是一個(gè)三元表達(dá)式。
“ABAP和Java里關(guān)于DEFAULT機(jī)制的語(yǔ)言特性是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
名稱欄目:ABAP和Java里關(guān)于DEFAULT機(jī)制的語(yǔ)言特性是什么-創(chuàng)新互聯(lián)
瀏覽路徑:http://www.dlmjj.cn/article/dhjhdj.html