ABAP 740的新语法:
上图的代码相当于:
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.
由此可见新语法比较简洁,能少写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的公众号:汪子熙。
相关推荐
在本文中,我们将深入探讨如何在Java环境中配置和使用FCKeditor,这是一个广泛使用的开源富文本编辑器。FCKeditor支持多种编程语言,包括PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java以及ABAP,并且兼容大多数...
Web Dynpro提供了两种开发语言选择,即ABAP和Java,分别对应Web Dynpro for ABAP和Web Dynpro for Java。这两种语言都支持Model-View-Controller(MVC)设计模式,有助于简化复杂应用的开发。 在Web Dynpro for ...
在安装SAP NetWeaver 7.0 ABAP + Java版本的Process Integration (PI)时,可能会遇到需要更改默认客户端(通常为001)到另一个作为Integration Server的客户端的需求。本文档将详细介绍如何在完成SAP NetWeaver 7.0...
4. **命名项目**:在下一步中,输入项目名称,例如“test”,并确保勾选了“Use default location”以使用Eclipse默认的位置保存项目,最后点击“Finish”完成项目创建。 5. **项目创建确认**:创建完成后,Eclipse...
FCKeditor的特点在于轻量级、易于配置,并且能与多种编程语言如PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java和ABAP等无缝集成。 【兼容性与浏览器支持】 FCKeditor支持大部分主流的网页浏览器,包括Internet ...
【SMSNotifyDialog】是Android应用开发中的一个组件,主要用于实现短信数据库的监听和拦截功能。在Android系统中,短信服务是通过ContentProvider进行数据管理的,而ContentObserver则是一种能够实时监控...