Experimental

public abstract @interface Experimental
implements Annotation

androidx.annotation.experimental.Experimental


Denotes that the annotated element is a marker of an experimental API. Any declaration annotated with this marker is considered part of an unstable API surface and its call sites should accept the experimental aspect of it either by using UseExperimental, or by being annotated with that marker themselves, effectively causing further propagation of that experimental aspect. Example:


 // Library code
 @Retention(CLASS)
 @Target({TYPE, METHOD, CONSTRUCTOR, FIELD, PACKAGE})
 @Experimental(level = Level.ERROR)
 public @interface ExperimentalDateTime {}

 @ExperimentalDateTime
 public class DateProvider {
     // ...
 }
 

 // Client code
 int getYear() {
     DateProvider provider; // Error: DateProvider is experimental
     // ...
 }

 @ExperimentalDateTime
 Date getDate() {
     DateProvider provider; // OK: the function is marked as experimental
     // ...
 }

 void displayDate() {
     System.out.println(getDate()); // Error: getDate() is experimental, acceptance is required
 }
 

Summary

Nested classes

enum Experimental.Level

Severity of the diagnostic that should be reported on usages of experimental API which did not explicitly accept the experimental aspect of that API either by using UseExperimental or by being annotated with the corresponding marker annotation. 

Public methods

Experimental.Level level()

Defines the reporting level for incorrect usages of this experimental API.

Inherited methods

Public methods

level

public Experimental.Level level ()

Defines the reporting level for incorrect usages of this experimental API.

Returns
Experimental.Level