【问题标题】:Constraints on parameter to implement two interfaces实现两个接口的参数约束
【发布时间】:2014-11-19 10:09:46
【问题描述】:

我正在尝试了解 Abap-OO 的一些工作原理。

在 C# 中,可以通过泛型中的约束将类型限制为任何类型,但至少符合某些(多个)接口:

where T : IAmInterfaceA, IAmInterfaceB

是否可以在 abap-oo 中存档相同的内容?我想将任何对象作为参数传递给符合两个接口的方法。


例如我想拥有这两个接口:

  • 验证
  • ISaveable

我不希望有一个额外的接口结合这两个分别提供的方法。

例如,可能有一个管理器类想要保存对象,但前提是它们有效:

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 中执行此操作?

【问题讨论】:

    标签: c# generics abap


    【解决方案1】:

    在 ABAP 中,您必须创建组合接口或在运行时检查条件(我不建议这样做)。您只能对参数使用单一类型。据我所知,像您引用的那样更复杂的约束是不可能的。

    【讨论】:

    • 此外,如果可以有更复杂的约束,我不确定我会提倡它。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2021-02-11
    相关资源
    最近更新 更多