oop - 可以将变量定义为对另一个程序中定义的本地类的引用吗?

标签 oop reflection casting abap rtti

我有一个程序 ZPROG1_TEST 我在其中定义了一个本地类 LCL_PROG1_HELPER .

我有第二个程序 ZPROG2_TEST,我想在其中定义对此类的变量引用。

难道我没有这样做的语法可能性吗?

或者这在理论上是否可以使用 RTTI 类,如 CL_ABAP_CLASSDESCR ?

额外
为什么我想这样做是因为我有一个自定义表单 ZMM_MEDRUCK 需要知道它正在打印的 ME32N 文档是否已更改但未保存。
我已经确定了我需要查询其属性的确切对象,但其中一些在设计时被定义为通用接口(interface),例如 IF_SERIALIZABLE_MM ,并且我需要将它们强制转换为我知道这些对象将成为其实例的本地类,例如\FUNCTION-POOL=MEGUI\CLASS=LCL_APPLICATION。

我当然可以尝试动态方法调用而不关心任何事情,但既然我在这里,我想我会先问这个问题。

最佳答案

你可以那样做。

REPORT  ZPROG1_TEST.

INTERFACE lif_prog1_helper.
  METHODS:
    test.
ENDINTERFACE.

CLASS LCL_PROG1_HELPER DEFINITION.
  PUBLIC SECTION.
    INTERFACES:
      lif_prog1_helper.
    ALIASES:
      test FOR lif_prog1_helper~test.
ENDCLASS.

CLASS LCL_PROG1_HELPER IMPLEMENTATION.
  METHOD test.
    WRITE / sy-repid.
  ENDMETHOD.
ENDCLASS.

REPORT ZPROG2_TEST.

DATA: g_test TYPE REF TO object.

START-OF-SELECTION.
  CREATE OBJECT g_test TYPE ('\PROGRAM=ZPROG1_TEST\CLASS=LCL_PROG1_HELPER').
  CALL METHOD g_test->('TEST').
  CALL METHOD g_test->('LIF_PROG1_HELPER~TEST').

关于oop - 可以将变量定义为对另一个程序中定义的本地类的引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18100225/

相关文章:

java - 在 Tomcat Servlet 中调用时,getAnnotations() 不返回 "external"注释

Java:将类成员变量/值转换为 Map - 反射

c++ - 不同编译器使用的不同类型转换运算符

java - 可配置资源 - 设计模式

java - 根据调用方法更改返回类型

c++ - 将 (void*) 转换为 std::vector<unsigned char>

c++ - 为什么以及何时需要转换为 char volatile&?

ios - 在 Swift 中创建一个发出 HTTPRequest 的类

python - OOP 代码中导入库的正确位置在哪里

python - 嵌套类更清晰的继承?