All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.pekko.annotation.DoNotInherit Maven / Gradle / Ivy

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * license agreements; and to You under the Apache License, version 2.0:
 *
 *   https://www.apache.org/licenses/LICENSE-2.0
 *
 * This file is part of the Apache Pekko project, which was derived from Akka.
 */

/*
 * Copyright (C) 2017-2022 Lightbend Inc. 
 */

package org.apache.pekko.annotation;

import java.lang.annotation.*;

/**
 * Marks APIs that are designed under a 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 an "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. */ @Documented @Retention(RetentionPolicy.CLASS) // to be accessible by MiMa @Target({ElementType.TYPE}) public @interface DoNotInherit {}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy