Annotation Type PublicApi


  • @Target({TYPE,FIELD,METHOD,CONSTRUCTOR})
    @Retention(SOURCE)
    public @interface PublicApi
    Signifies that the annotated entity is a public API for extension authors. Public APIs may change in breaking ways only between major Druid release lines (e.g. 0.10.x -> 0.11.0), but otherwise must remain stable. Public APIs may change at any time in non-breaking ways, however, such as by adding new fields, methods, or constructors. Note that interfaces annotated with PublicApi but not with ExtensionPoint are not meant to be subclassed in extensions. In this case, the annotation simply signifies that the interface is stable for callers. In particular, since it is not meant to be subclassed, new non-default methods may be added to an interface and new abstract methods may be added to a class. If a class or interface is annotated, then all public and protected fields, methods, and constructors that class or interface are considered stable in this sense. If a class is not annotated, but an individual field, method, or constructor is annotated, then only that particular field, method, or constructor is considered a public API. Classes, fields, method, and constructors _not_ annotated with @PublicApi may be modified or removed in any Druid release, unless they are annotated with ExtensionPoint (which implies they are a public API as well).
    See Also:
    ExtensionPoint, UnstableApi