在一行中为类接口创建实例?

时间:2019-09-12 11:33:00

标签: oop interface sap abap new-operator

也许这是一个非常基本的问题,但我没有设法确定这是否可行。

从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( ).

有可能吗?

1 个答案:

答案 0 :(得分:3)

可能有三个答案。

您可以使用interface component selector ~

DATA(result) = NEW zclass( )->zif_instance~method( ).

或者您的类通过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( ).