资讯专栏INFORMATION COLUMN

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

vincent_xyb / 1551人阅读

摘要:下图的第行会抛出异常,而行不会,从语义上容易理解如果内表里不存在为的记录,则返回开发者使用关键字指定的一个结构作为默认值。在也有类似机制。

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仅仅是一个三元表达式。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68786.html

相关文章

  • ABAPJava关于DEFAULT(默认)机制一些语言特性

    摘要:下图的第行会抛出异常,而行不会,从语义上容易理解如果内表里不存在为的记录,则返回开发者使用关键字指定的一个结构作为默认值。在也有类似机制。 ABAP 740的新语法: showImg(https://segmentfault.com/img/remote/1460000013736553); 上图的代码相当于: DATA: ls_data LIKE LINE OF it_data. R...

    Airmusic 评论0 收藏0
  • ABAP vs Java, 蛙泳 vs 自由泳

    摘要:去年月定下的一年之内学会自由泳的目标终于实现了,特来还愿。和蛙泳和自由泳。或许有的朋友觉得这两组概念风马牛不相及,然而在眼中,之于相当于蛙泳之于自由泳。像前面介绍过的和拥有五花八门的工具一样,蛙泳和自由泳也有着众多变式。 去年7月定下的一年之内学会自由泳的目标终于实现了,特来还愿。 ABAP和Java, 蛙泳和自由泳。前面的组合是Jerry用来挣钱养家的技术,后者是Jerry花了大量业...

    taoszu 评论0 收藏0
  • JavaABAP几种引用类型分析比较

    摘要:当包裹在虚引用实例中的对象引用被垃圾回收器删除时,虚引用实例本身会自动被插入我之前指定到虚引用构造函数输入参数的那个队列中去。 Java编程语言中几种不同的引用类型是面试时经常容易被问到的问题:强引用,软引用,弱引用,虚引用。 其实除了Java之外,某些 其他编程语言也有类似概念,比如ABAP。今天我们就来比较一下。 根据ABAP帮助文档,我们可以把某个对象的引用包在一个Weak Re...

    zzzmh 评论0 收藏0
  • 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧

    摘要:比如的的个性化设置是这样的,字体必须用程序猿专用的等宽开源字体,这样显得比较专业。我觉得网上流传的程序猿和工具的鄙视链很无聊,与其有时间去鄙视别人,不如把这时间用来深入研究自己每天用的,进一步提高自己单位时间内的工作效率。 Jerry和SAP成都研究院一些新同事聊天时,谈到ABAP和SAP GUI这个话题。很多新同事在加入SAP成都之前,是做Java和C++开发的,习惯了Eclipse...

    jkyin 评论0 收藏0
  • ABAP程序给佛祖开过光么?来试试Jerry这个小技巧

    摘要:实现步骤非常简单,在标准程序的内创建一个隐式增强。禁止在测试服务器和生产服务器使用否则由此造成的一切负面后果,本人及概不负责。 最近Jerry在忙一个项目,技术栈换成了nodejs平台,语言换成了JavaScript,因为赶项目进度,一直没时间更新公众号。感谢大家的支持,关注人数还是慢慢地增长到了3000。 showImg(https://segmentfault.com/img/re...

    SQC 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<