有没有办法在没有 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/