博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ABAP和Java里关于DEFAULT(默认)机制的一些语言特性
阅读量:6694 次
发布时间:2019-06-25

本文共 1017 字,大约阅读时间需要 3 分钟。

hot3.png

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的公众号:汪子熙。

转载于:https://my.oschina.net/u/3771578/blog/1635562

你可能感兴趣的文章
前端真的能做到彻底权限控制吗?
查看>>
EdgeX Foundry边缘计算框架-核心服务层
查看>>
通读Python官方文档之Threading
查看>>
PHP常用方法总结
查看>>
【294天】每日项目总结系列032(2017.11.26)
查看>>
LVM动态扩展
查看>>
MongoDB副本集搭建
查看>>
CSS练习实现多种loading
查看>>
JS数组交集 并集 差集
查看>>
webpack中打包后端模板的思路
查看>>
腾讯前端求职直播课——简历篇
查看>>
【译】JS基础算法脚本:查找字符串中最长的子字符
查看>>
项目 - 收藏集 - 掘金
查看>>
Angular4使用经验之:jwplayer插件运用到angular4插件普适法
查看>>
从零开始用 Flask 搭建一个网站(二)
查看>>
js中的for in和for each in的用法和区别
查看>>
夏日葵电商:微信商城初步搭建,如何提高产品转化率
查看>>
利用vue-cli配合vue-router搭建一个完整的spa流程(一)
查看>>
Microsoft推出适用于Win 8.1和Win10的KB 4010250 Flash Player更新
查看>>
JS的内置对象系列:Array(一)
查看>>