[SAP ABAP开发技术总结]数据引用(data references)、对象引用(object references)

时间:2023-03-09 22:28:30
[SAP ABAP开发技术总结]数据引用(data references)、对象引用(object references)
[SAP ABAP开发技术总结]数据引用(data references)、对象引用(object references)
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4263761.html

有点像Java里定义一个对应引用一样,但Java里没有直接对某个基本变量定义一个引用,除非使用基本类型所对应的包装类型,JDK5后好像支持自动装箱与自动拆箱了吧。可以把引用理解成一个地址

1.12.     数据引用、对象引用

TYPE REF TO data                     数据引用data references

TYPE REF TO object               对象引用object references

除了object,所有的通用类型都能直接用TYPE后面(如TYPE data,但没有TYPE object,object不能直接跟在TYPE后面,只能跟在TYPE REF TO后面)

TYPE REF TO 后面可接的通用类型只能data(数据引用)或者是object(对象引用)通用类型,其他通用类型不行

1.12.1.           数据引用Data References

."可直接解引用使用,不需要先通过分配给字段符号后再使用

DATA: BEGIN OF strct,
    c,
  END OF strct.
DATA: dref LIKE REF TO strct .
CREATE DATA dref .
dref->*-c = 'A'.

TYPES: tpy TYPE c.
DATA: c1 TYPE REF TO tpy.
DATA: c2 LIKE REF TO c1."二级指针
GET REFERENCE OF 'a' INTO c1.
GET REFERENCE OF c1 INTO c2.
WRITE: c2->*->*."a

1.12.2.           对象引用Object references

.
ENDCLASS.
CLASS cl IMPLEMENTATION.
ENDCLASS.

DATA: obj TYPE REF TO cl.
CREATE OBJECT obj."创建对象

DATA: orefLIKE REF TO obj."oref即为对象引用,即对象指针,指向某个对象,存储对象地址
GET REFERENCE OF obj INTO oref. "获取对象地址
WRITE: oref->*->i."1

1.12.3.           GET REFERENCE OF获取变量/对象/常量地址

DATA: e_i3 TYPE REF TO i .
GET REFERENCE OF 33 INTO e_i3.
WRITE: e_i3->*."33
"但不能修改常量的值
"e_i3->* = 44.

.
WRITE: i. "44