我正在尝试了解Abap- OO 的一些工作原理。
在C#中,可以通过以下方式将类型限制为任何类型,但至少通过泛型中的约束符合某些(多个)接口:
where T : IAmInterfaceA, IAmInterfaceB
是否可以在abap-oo中存档相同的内容?我想将任何对象作为参数传递给符合两个接口的方法。
例如,我想拥有这两个接口:
我不希望有一个额外的接口,将两者分别提供的方法结合起来。
例如,可能有一个想要保存对象的管理器类,但前提是它们是有效的:
Manager.Save(/* <object that conforms to both interfaces IValidate and ISaveable> */ );
因此,如果我得到一个像SimpleData : IValidate, ISaveable
这样的简单类,则可以将此类的对象传递给该方法,但不能传入其类只实现ISaveable
的另一个对象。
在C#中,我只是将save方法定义为通用方法:
static bool Save<T>(T dataObject) where T : IValidate, ISaveable { /* ... */ }
如果可能,如何在abap-oo中执行此操作?
答案 0 :(得分:3)
在ABAP中,您必须创建组合接口或在运行时检查条件(我不建议)。您只能为参数使用单一类型。据我所知,像你引用的那些更复杂的约束是不可能的。