Annotation Type DoNotInherit


  • @Documented
    @Retention(CLASS)
    @Target(TYPE)
    public @interface DoNotInherit
    Marks APIs that are designed under an closed-world assumption for and are NOT meant to be extended by user-code. It is fine to extend these classes within Apache Pekko itself, however.

    This is most useful for binary compatibility purposes when a set of classes and interfaces assume a "closed world" between them, and gain the ability to add methods to the interfaces without breaking binary compatibility for users of this code. Specifically this assumption may be understood intuitively: as all classes that implement this interface are in this compilation unit / artifact, it is impossible to obtain a "old" class with a "new" interface, as they are part of the same dependency.

    Notable examples of such API include the FlowOps trait in Pekko Streams or Pekko HTTP model interfaces, which extensively uses inheritance internally, but are not meant for extension by user code.