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

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

ABAP 740的新语法:

700

上图的代码相当于:

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.

700

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

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

700

在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。如下图调试器里所示:


700

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

700

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

700
700

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

700
700

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24475491/viewspace-2151939/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24475491/viewspace-2151939/

你可能感兴趣的文章
如何彻底保护你的网站不受RDS攻击的威胁(转)
查看>>
提高网站在Google中的排名——面向搜索引擎的网站设计(转)
查看>>
SQL Server 存储过程的经典分页(转)
查看>>
SMS基本概念和移动通信系统介绍(转)
查看>>
匿名FTP的安全设定(转)
查看>>
学习J2ME编程需要掌握的七种技术(转)
查看>>
DB2 UDB V8.1管理学习笔记(二)(转)
查看>>
IBM DB2 日常维护汇总(三)(转)
查看>>
怎样创建.NET Web Service(4)(转)
查看>>
Symbian OS 开发初级手册(转)
查看>>
限制只能中文输入的方法(转)
查看>>
MySQL进阶SELECT篇(转)
查看>>
SQL Server中死锁产生的原因及解决办法(转)
查看>>
南阳铁通推出宽带“网吧式”服务(转)
查看>>
共享池 shared pool
查看>>
一张图搞定Java面向对象
查看>>
DOORS需求管理工具的其他资料
查看>>
使用 Rational RequisitePro 进行需求管理的新技术
查看>>
最新解决方案助力Borland ALM亚太应用
查看>>
Borland ALM之需求定义和管理解决方案
查看>>