在一行中为 class 接口创建实例?
Create instance for a class interface in a single line?
也许这是一个非常基本的问题,但我没能弄清楚它是否可行。
从 7.40 开始,我们有 NEW 运算符来创建实例。它允许在一行中创建一个对象并调用一个方法:
DATA(result) = NEW zclass( )->method( ).
但是如果我的 zclass 实现了 zinterface,我想在一行中执行以下操作:
DATA: zif_instance TYPE REF TO zinterface.
zif_instance = NEW zclass( ).
DATA(result) = zif_instance->method( ).
可以吗?
一共有三个答案。
或者你使用 interface component selector ~
:
DATA(result) = NEW zclass( )->zif_instance~method( ).
或者您的 class 通过 ALIASES 语句定义接口方法的别名,例如 method_alias
,即 ALIASES method_alias FOR zif_instance~method
(注意:别名也可以是与原始方法名称相同的名称,即 method
):
DATA(result) = NEW zclass( )->method_alias( ).
或者您有 CAST 运算符。
DATA(result) = CAST zif_instance( NEW zclass( ) )->method( ).
也许这是一个非常基本的问题,但我没能弄清楚它是否可行。
从 7.40 开始,我们有 NEW 运算符来创建实例。它允许在一行中创建一个对象并调用一个方法:
DATA(result) = NEW zclass( )->method( ).
但是如果我的 zclass 实现了 zinterface,我想在一行中执行以下操作:
DATA: zif_instance TYPE REF TO zinterface.
zif_instance = NEW zclass( ).
DATA(result) = zif_instance->method( ).
可以吗?
一共有三个答案。
或者你使用 interface component selector ~
:
DATA(result) = NEW zclass( )->zif_instance~method( ).
或者您的 class 通过 ALIASES 语句定义接口方法的别名,例如 method_alias
,即 ALIASES method_alias FOR zif_instance~method
(注意:别名也可以是与原始方法名称相同的名称,即 method
):
DATA(result) = NEW zclass( )->method_alias( ).
或者您有 CAST 运算符。
DATA(result) = CAST zif_instance( NEW zclass( ) )->method( ).