47 ElementType.PACKAGE,
48 ElementType.MODULE,
49 ElementType.TYPE})
50 // CLASS retention will hopefully be sufficient for the purposes at hand
51 @Retention(RetentionPolicy.CLASS)
52 // *Not* @Documented
53 public @interface PreviewFeature {
54 /**
55 * Name of the preview feature the annotated API is associated
56 * with.
57 */
58 public Feature feature();
59
60 public boolean reflective() default false;
61
62 /**
63 * Enum of preview features in the current release.
64 * Values should be annotated with the feature's {@code JEP}.
65 */
66 public enum Feature {
67 // not used
68 VIRTUAL_THREADS,
69 @JEP(number=442, title="Foreign Function & Memory API", status="Third Preview")
70 FOREIGN,
71 @JEP(number=430, title="String Templates")
72 STRING_TEMPLATES,
73 @JEP(number=443, title="Unnamed Patterns and Variables")
74 UNNAMED,
75 @JEP(number=445, title="Unnamed Classes and Instance Main Methods")
76 UNNAMED_CLASSES,
77 @JEP(number=446, title="Scoped Values", status="Preview")
78 SCOPED_VALUES,
79 @JEP(number=453, title="Structured Concurrency", status="Preview")
80 STRUCTURED_CONCURRENCY,
81 /**
82 * A key for testing.
83 */
84 @JEP(number=0, title="Test Feature")
85 TEST,
86 ;
87 }
88
89 /**
90 * Annotation identifying the JEP associated with a preview feature.
|
47 ElementType.PACKAGE,
48 ElementType.MODULE,
49 ElementType.TYPE})
50 // CLASS retention will hopefully be sufficient for the purposes at hand
51 @Retention(RetentionPolicy.CLASS)
52 // *Not* @Documented
53 public @interface PreviewFeature {
54 /**
55 * Name of the preview feature the annotated API is associated
56 * with.
57 */
58 public Feature feature();
59
60 public boolean reflective() default false;
61
62 /**
63 * Enum of preview features in the current release.
64 * Values should be annotated with the feature's {@code JEP}.
65 */
66 public enum Feature {
67 // not used, but required for interim javac to not warn.
68 VIRTUAL_THREADS,
69 FOREIGN,
70
71 @JEP(number=430, title="String Templates")
72 STRING_TEMPLATES,
73 @JEP(number=443, title="Unnamed Patterns and Variables")
74 UNNAMED,
75 @JEP(number=445, title="Unnamed Classes and Instance Main Methods")
76 UNNAMED_CLASSES,
77 @JEP(number=446, title="Scoped Values", status="Preview")
78 SCOPED_VALUES,
79 @JEP(number=453, title="Structured Concurrency", status="Preview")
80 STRUCTURED_CONCURRENCY,
81 /**
82 * A key for testing.
83 */
84 @JEP(number=0, title="Test Feature")
85 TEST,
86 ;
87 }
88
89 /**
90 * Annotation identifying the JEP associated with a preview feature.
|