ABAP和Java里关于DEFAULT(默认)机制的一些语言特性
时间:2022-05-04
本文章向大家介绍ABAP和Java里关于DEFAULT(默认)机制的一些语言特性,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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的公众号:汪子熙。
- 构建Flex应用的10大误区
- Flex的起步推动新语言学习
- 简单科普云计算相关内容
- Silverlight初级教程-开发工具
- WCF的Binding模型之五:绑定元素(Binding Element)
- 2018年物联网发展趋势
- Silverlight初级教程-概述
- WCF的Binding模型之四:信道工厂(Channel Factory)
- 如何做一个好的前端重构工程师
- 云计算是否真的对企业来说无所不能?
- 科协带你开个2017年科技世界的总结会!
- 基于StockRanker算法的机器学习量化策略
- Enterprise Library深入解析与灵活应用(6):自己动手创建迷你版AOP框架
- 交易费用过高的比特币还能成为“未来货币”吗?
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 如何在腾讯云中使用ExternalName类型的Service
- 一天一大 leet (990. 等式方程的可满足性)
- 一天一大 leet(有序矩阵中第 K 小的元素)难度:中等-Day20200702
- 一天一大 leet (126. 单词接龙 II)
- BigData--Yarn资源调度器
- 一天一大 leet(最长有效括号)难度:困难-Day20200704
- BigData--Zookeeper介绍和使用
- 一天一大 leet(通配符匹配)难度:困难-Day20200705
- 日志框架,选择Logback Or Log4j2?
- django-rest-framework配置json web token进行接口的认证
- spring中的SpEL表达式
- 京喜小程序首页无障碍优化实践
- 几种排序算法
- 一天一大 leet(转变数组后最接近目标值的数组和)难度:中等 DAY-14
- 推荐一个生成后端模拟数据的懒人工具:lazy-mock