ABAP和Java里关于DEFAULT(默认)机制的一些语言特性_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > ABAP和Java里关于DEFAULT(默认)机制的一些语言特性

ABAP和Java里关于DEFAULT(默认)机制的一些语言特性

 2018/3/11 15:47:12  JerryWang_SAP  程序员俱乐部  我要评论(0)
  • 摘要:ABAP740的新语法:上图的代码相当于:DATA:ls_dataLIKELINEOFit_data.READTABLEit_dataINTOls_dataWITHKEYobject_ext=cl_crm_prodil_bo_names=>gc_prod_root.CALLMETHODadd_dataEXPORTINGir_child_object=ir_root_objectis_data=ls_data.由此可见新语法比较简洁,能少写3行代码。但是这样有一个缺陷
  • 标签:Default Java

ABAP 740的新语法:

?

上图的代码相当于:

class="hljs javascript">monospace; font-size: 12px; background-color: transparent; border-radius: 0px; padding: 0px; border: none;" class="javascript">DATA: ls_data LIKE LINE OF it_data.
READ TABLE it_data INTO ls_data WITH KEY object_ext = function">cl_crm_prodil_bo_names=>gc_prod_root.
CALL METHOD add_data
   EXPORTING
      ir_child_object = ir_root_object
      is_data = ls_data.

由此可见新语法比较简洁,能少写3行代码。但是这样有一个缺陷,在新语法下如果it_data内表内不存在object_ext的值为cl_crm_prodil_bo_names=>gc_prod_root的记录,就会终止程序执行,抛出异常CX_SY_ITAB_LINE_NOT_FOUND.

?

针对这种情况,ABAP也有对应的解决方案。

下图的第17行会抛出异常,而19行不会,从语义上容易理解:如果内表lt_data里不存在name为Spring2的记录,则返回开发者使用DEFAULT关键字指定的一个结构作为默认值。

?

在Java 8也有类似机制。为了避免臭名昭著的NullPointerException,Java开发人员在使用对象的实例方法之前,需要检查对象实例是否不为null:

if( xx != null ){
    xx.doSomething();
}

在Java 8里,在包java.util里提供了一个新的工具类Optional,看看它的用法。

第11行的filter方法,语义上应该返回一个null,因为我在第10行初始化的字符串常量的长度显然大于6. 但是调用这个filter方法的对象是一个Optional对象,所以最终filter方法最终也返回一个Optional对象,这个对象包裹了一个null。如下图调试器里所示:

?

?

第14行执行的结果会打印出orElse里指定的值,此处orElse的思路和上述介绍的ABAP里的DEFAULT关键字是一致的。

?

这个Optional工具类的实现也很简易,orElse仅仅是一个三元表达式

? ?

要查看更多ABAP和Java,JavaScript的语言特性比较,请关注Jerry的公众号:汪子熙。

? ?
上一篇: ABAP git客户端 下一篇: 没有下一篇了!
发表评论
用户名: 匿名