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_dataEXPORTINGir_child_object = ir_root_objectis_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://www.cnblogs.com/sap-jerry/p/8543709.html

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

  1. SAP ABAP和Java里的弱引用(WeakReference)和软引用(SoftReference)

    Jerry前一篇文章 SAP ABAP一组关键字 IS BOUND, IS NOT INITIAL和IS ASSIGNED的用法辨析 介绍了在ABAP里判断引用变量是否包含了一个有效引用的关键字:IS ...

  2. ABAP和Java里的单例模式攻击

    面向对象编程世界里的单例模式(Singleton)可能是设计模式里最简单的一种,大多数开发人员都觉得可以很容易掌握它的用法.单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点. 然而在某些场 ...

  3. java里的多线程同步机制

    2019独角兽企业重金招聘Python工程师标准>>> 要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性.多个线程之间是不能直接传递数据交互的,它们之间的交互只能通 ...

  4. java里的关键字有什么用_java语言关键字有哪些?都有什么用处?

    Java语言中的关键字是非常多的,并且有着一定的规范,本文就将带大家深入了解其中详情. 关键字概念 Java中的关键字一般会被用来表示一种数据类型,或表示程序的结构等;它们是不能用作变量名.方法名.类 ...

  5. 从内存分配角度分析c和java里的static 关键字.

    即使作为Java的初学者, 对this 和 static 这两个关键字都不会陌生. 其实也不难理解: this 关键字:  指的是对象的本身(注意不是类本身)  跟.net 语言的Me 关键字类似. ...

  6. 如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service

    这是 Jerry 2021 年的第 47 篇文章,也是汪子熙公众号总共第 324 篇原创文章. Jerry 2014 年时,曾经在 SAP 社区上写过一篇英文博客,介绍了如何在 ABAP On-Pre ...

  7. JavaScript, ABAP和Scala里的尾递归(Tail Recursion)

    这是Jerry 2021年的第 12 篇文章,也是汪子熙公众号总共第 283 篇原创文章. 今天是2021年1月20日,看看历史上的今天都发生了什么. 2004年1月20日,第一个公开版本的Scala ...

  8. Java里的数组介绍

    注意, 本文讲的是数组(Array),  非数组型线性表容器(ArrayList). 一. C语言的静态数组和动态数组. 稍微接触过c的程序猿都应该知道, c语言里的数组分为静态数组和动态数组. 1. ...

  9. 《Algorithms》Java 语言特性

    算法第4版中出现的特性 泛型 自动装箱 迭代 记录一下.......不时更新.. 泛型 集合类的抽象数据类型的一个关键特性是我们应该可以用它存储任意类型的数据. Java拥有独特的泛型机制(许多语言并 ...

最新文章

  1. 光电信标灯发光盘的特性电流测试
  2. java.io.CharConversionException: Not an ISO 8859-1 character:
  3. POJ 2516 基础费用流
  4. Linux驱动之内核加载模块过程分析
  5. VTK:点定位器用法实战
  6. 具备自动刷新功能的 SAP ABAP ALV 报表
  7. mysql timestamp add_「timestampdiff」MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法 - seo实验室...
  8. 在Project中引用zedgraph控件
  9. 谷歌提出COMISR算法:针对视频压缩的压缩感知超分辨率
  10. 苹果X可以升级5G吗_郭明錤:苹果5G手机明年推出 屏幕最大升级至6.7寸
  11. 黄奕:我之前弄了一个母婴网站,根本就不会做生意,几个月上千万就赔进去了
  12. python解析pdf乱码,python pdfkit 中文乱码问题的解决方案
  13. PDF如何加水印? PDF加水印的方法
  14. vue下拉el-select三级联动(公司-部门-人员)
  15. Unicode 中文,日文,西欧语言Unicode编码域(区间)
  16. C语言if语句的基本用法
  17. 伊利诺伊香槟大学计算机专业排名,伊利诺伊大学香槟分校专业排名一览及最强专业推荐(QS世界大学排名)...
  18. AI丨亚马逊将在加州欧文地区测试其自动送货机器人Scout
  19. 个人电脑秒变服务器 简单几步,你的电脑也可以成为服务器 (内网穿透)
  20. 建行u盾单片机可以再次使用吗_Si7021建行U盾19264液晶制作温湿度显示,实物单片机代码开源...

热门文章

  1. php video标签使用方法,HTML_HTML5 video标签(播放器)学习笔记(一):使用入门,近有在学习html5中video标签(播 - phpStudy...
  2. 应用TP3.2.3的一些小问题(一)
  3. 不同层级的Java开发者的不同行为
  4. 【408预推免复习】计算机组成原理之存储器
  5. 【深度学习】EfficientNetV2分析总结和flops的开源库
  6. python【蓝桥杯vip练习题库】ALGO-87字串统计(暴力)
  7. 最短路径(floyed)
  8. 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
  9. 19-7-16学习笔记
  10. mybatis 源码分析, 初始化