abap - 如何在ABAP中没有getter的情况下读取对象的私有(private)属性

标签 abap

有没有办法在没有 getter 的情况下获取对象私有(private)属性的值。不允许以任何形式修改类。

请在下面找到一个具有私有(private)属性的示例类。

CLASS counter DEFINITION.
  PUBLIC SECTION.
    METHODS: set IMPORTING value(set_value) TYPE i.
  PRIVATE SECTION.
    DATA count TYPE i.
ENDCLASS.                    "counter DEFINITION 

CLASS counter IMPLEMENTATION.
  METHOD set.
    count = set_value.
  ENDMETHOD.                    "set
ENDCLASS.                    "counter IMPLEMENTATION

如何获取count的值?从 counter 继承将不起作用,因为 count 是私有(private)的,不 protected 。

最佳答案

不幸的是,我自己尝试了很多不同的方法,但都不起作用:

  • 拥有标准父类(super class) - 父类(super class)无法访问
    动态子类的私有(private)属性
  • 创建子类永远不会起作用,因为它只能访问 protected
  • 尝试使用单元测试框架不起作用。我尝试过了 调用允许访问私有(private)数据但不允许访问的内核模块 有效。

你基本上运气不好。不过,根据您尝试访问的类,有一个晦涩的选项。有些类具有指定为友元的接口(interface),如果您实现该接口(interface),您可以访问它们的私有(private)数据(7.20 上的 ALV 是这样的),但不幸的是,这仅在少数有限的情况下起作用。

关于abap - 如何在ABAP中没有getter的情况下读取对象的私有(private)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19152768/

相关文章:

abap - 复杂选择字段的权限检查(如 SELECT-OPTIONS)

abap - 如何学习SAP ERP(不买)?

dynamic - 如何为READ TABLE设置动态键?

database - ABAP数据簇是如何存储在数据库中的?

select - 列出没有特定语言键的 Material

abap - 不带命名参数调用动态方法

abap - 通过 RFC 返回二进制数据

abap - 使用动态方法名称调用方法,RuntimeException

abap - 形参个数大于实参个数

odata - 将空值传递给 OData V2 Edm.Time 属性