[SAP ABAP開發技術總結]數據引用(data references)、對象引用(object references)


 

有點像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: dref TYPE REF TO i ."dref即為數據引用,即數據指針,指向某個變量或常量,存儲變量地址
CREATE DATA dref.
dref
->* = 2147483647."
可直接解引用使用不需要先通過分配給字段符號后再使用

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

CLASS cl DEFINITION.
 
PUBLIC SECTION.
   
DATA: i VALUE 1.
ENDCLASS.
CLASS cl IMPLEMENTATION.
ENDCLASS.

 

DATA: obj TYPE REF TO cl.
CREATE OBJECT obj."創建對象

DATA: oref LIKE 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.

DATA: i TYPE i VALUE 33,
      dref
LIKE REF TO i."
存儲普通變量的地址
GET REFERENCE OF i INTO dref.
dref
->* = 44.
WRITE: i. "44


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM