gpt4 book ai didi

methods - 扩展ABAP中重写方法的接口(interface)

转载 作者:行者123 更新时间:2023-12-04 01:52:21 24 4
gpt4 key购买 nike

众所周知,不能在继承的ABAP类中扩展或重新定义重写方法的接口(interface)。 Help :

The interface and the category of the method (a general or functional instance method or event handler) are not changed in a redefinition.

这涵盖了全局和局部类的重新定义。

如果要添加或删除方法参数或更改它们的类型,此限制的可能解决方法是什么?可选参数是一种方式,虽然不是很舒服。还有其他方法吗?

最佳答案

您不能以任何方式在其实现中更改接口(interface)方法的签名。这仅仅是因为没有办法在运行时不会产生难以分析的语法错误。接口(interface)是一个契约——任何实现它的类都 promise 它将实现接口(interface)中存在的所有方法(和变量……)。

假设接口(interface) IF1 有一个方法 METH 接受类型 TYPE1 的单个参数 PAR1。如果您现在编写一个实现方法 METH 的类,该方法具有 TYPE2 类型的单个参数 PAR1,那么您没有 编写了一个实现 IF1 的类。将类型 TYPE1 的参数传递给您的类的方法的调用者将遇到类型转换错误(无论是在运行时还是在编译时,在某种程度上取决于类型的通用性)。

因此,在不产生此类运行时错误的情况下,无法在其重新定义中更改接口(interface)方法的签名 - 您的类实现该接口(interface)。实现接口(interface)意味着该类将完全接受为接口(interface)中的方法指定的参数的数量、类型和种类。几乎没有任何用例可以让您有意义地想要更改它,同时仍然声称您的类实现了该接口(interface)。无论您想做什么,这都不是解决方案。

关于methods - 扩展ABAP中重写方法的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52409750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com