ICU-21480 BRS#18 ICU4J promotions to stable
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatter.java
index 99e9ae3..7a1f6c0 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/number/NumberFormatter.java
@@ -212,7 +212,7 @@
          * <p>
          * Behavior of this option with non-currency units is not defined at this time.
          *
-         * @draft ICU 67
+         * @stable ICU 67
          * @see NumberFormatter
          */
         FORMAL,
@@ -224,7 +224,7 @@
          * <p>
          * Behavior of this option with non-currency units is not defined at this time.
          *
-         * @draft ICU 67
+         * @stable ICU 67
          * @see NumberFormatter
          */
         VARIANT,
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyDisplayNames.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyDisplayNames.java
index 811e868..c8460b4 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyDisplayNames.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CurrencyDisplayNames.java
@@ -149,7 +149,7 @@
      *
      * @param isoCode the three-letter ISO code.
      * @return the formal symbol.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public abstract String getFormalSymbol(String isoCode);
 
@@ -164,7 +164,7 @@
      *
      * @param isoCode the three-letter ISO code.
      * @return the variant symbol.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public abstract String getVariantSymbol(String isoCode);
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormat.java
index 5d5a9d0..6cd03d6 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormat.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateFormat.java
@@ -537,30 +537,30 @@
 
     /**
      * Hour Cycle
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public enum HourCycle {
         /**
          * hour in am/pm (0~11)
-         * @draft ICU 67
+         * @stable ICU 67
          */
         HOUR_CYCLE_11,
 
         /**
          * hour in am/pm (1~12)
-         * @draft ICU 67
+         * @stable ICU 67
          */
         HOUR_CYCLE_12,
 
         /**
          * hour in day (0~23)
-         * @draft ICU 67
+         * @stable ICU 67
          */
         HOUR_CYCLE_23,
 
         /**
          * hour in day (1~24)
-         * @draft ICU 67
+         * @stable ICU 67
          */
         HOUR_CYCLE_24;
     };
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
index 8a09b68..528eed8 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
@@ -1357,7 +1357,7 @@
 
     /**
      * Return the default hour cycle.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public DateFormat.HourCycle getDefaultHourCycle() {
       switch(getDefaultHourFormatChar()) {
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java
index 9baff8d..fee273c 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java
@@ -53,13 +53,13 @@
     /**
      * Type of meaning expressed by the list.
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public enum Type {
         /**
          * Conjunction formatting, e.g. "Alice, Bob, Charlie, and Delta".
          *
-         * @draft ICU 67
+         * @stable ICU 67
          */
         AND,
 
@@ -67,14 +67,14 @@
          * Disjunction (or alternative, or simply one of) formatting, e.g.
          * "Alice, Bob, Charlie, or Delta".
          *
-         * @draft ICU 67
+         * @stable ICU 67
          */
         OR,
 
         /**
          * Formatting of a list of values with units, e.g. "5 pounds, 12 ounces".
          *
-         * @draft ICU 67
+         * @stable ICU 67
          */
         UNITS
     };
@@ -82,27 +82,27 @@
     /**
      * Verbosity level of the list patterns.
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public enum Width {
         /**
          * Use list formatting with full words (no abbreviations) when possible.
          *
-         * @draft ICU 67
+         * @stable ICU 67
          */
         WIDE,
 
         /**
          * Use list formatting of typical length.
          *
-         * @draft ICU 67
+         * @stable ICU 67
          */
         SHORT,
 
         /**
          * Use list formatting of the shortest possible length.
          *
-         * @draft ICU 67
+         * @stable ICU 67
          */
         NARROW,
     };
@@ -110,7 +110,7 @@
     /**
      * Class for span fields in FormattedList.
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public static final class SpanField extends UFormat.SpanField {
         private static final long serialVersionUID = 3563544214705634403L;
@@ -121,7 +121,7 @@
          * Instances of LIST_SPAN should have an associated value, the index
          * within the input list that is represented by the span.
          *
-         * @draft ICU 67
+         * @stable ICU 67
          */
         public static final SpanField LIST_SPAN = new SpanField("list-span");
 
@@ -147,20 +147,20 @@
 
     /**
      * Field selectors for format fields defined by ListFormatter.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public static final class Field extends Format.Field {
         private static final long serialVersionUID = -8071145668708265437L;
 
         /**
          * The literal text in the result which came from the resources.
-         * @draft ICU 67
+         * @stable ICU 67
          */
         public static Field LITERAL = new Field("literal");
 
         /**
          * The element text in the result which came from the input strings.
-         * @draft ICU 67
+         * @stable ICU 67
          */
         public static Field ELEMENT = new Field("element");
 
@@ -191,7 +191,7 @@
      *
      * Not intended for public subclassing.
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public static final class FormattedList implements FormattedValue {
         private final FormattedStringBuilder string;
@@ -202,7 +202,7 @@
 
         /**
          * {@inheritDoc}
-         * @draft ICU 67
+         * @stable ICU 67
          */
         @Override
         public String toString() {
@@ -211,7 +211,7 @@
 
         /**
          * {@inheritDoc}
-         * @draft ICU 67
+         * @stable ICU 67
          */
         @Override
         public int length() {
@@ -220,7 +220,7 @@
 
         /**
          * {@inheritDoc}
-         * @draft ICU 67
+         * @stable ICU 67
          */
         @Override
         public char charAt(int index) {
@@ -229,7 +229,7 @@
 
         /**
          * {@inheritDoc}
-         * @draft ICU 67
+         * @stable ICU 67
          */
         @Override
         public CharSequence subSequence(int start, int end) {
@@ -238,7 +238,7 @@
 
         /**
          * {@inheritDoc}
-         * @draft ICU 67
+         * @stable ICU 67
          */
         @Override
         public <A extends Appendable> A appendTo(A appendable) {
@@ -247,7 +247,7 @@
 
         /**
          * {@inheritDoc}
-         * @draft ICU 67
+         * @stable ICU 67
          */
         @Override
         public boolean nextPosition(ConstrainedFieldPosition cfpos) {
@@ -256,7 +256,7 @@
 
         /**
          * {@inheritDoc}
-         * @draft ICU 67
+         * @stable ICU 67
          */
         @Override
         public AttributedCharacterIterator toCharacterIterator() {
@@ -310,7 +310,7 @@
      * @param locale
      *            the locale in question.
      * @return ListFormatter
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public static ListFormatter getInstance(ULocale locale, Type type, Width width) {
         String styleName = typeWidthToStyleString(type, width);
@@ -326,7 +326,7 @@
      * @param locale
      *            the locale in question.
      * @return ListFormatter
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public static ListFormatter getInstance(Locale locale, Type type, Width width) {
         return getInstance(ULocale.forLocale(locale), type, width);
@@ -397,7 +397,7 @@
      * @param items
      *            items to format. The toString() method is called on each.
      * @return items formatted into a FormattedList
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public FormattedList formatToValue(Object... items) {
         return formatToValue(Arrays.asList(items));
@@ -411,7 +411,7 @@
      * @param items
      *            items to format. The toString() method is called on each.
      * @return items formatted into a FormattedList
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public FormattedList formatToValue(Collection<?> items) {
         return formatImpl(items, true).toValue();
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java b/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java
index 2c40e55..03bcc1f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/Currency.java
@@ -106,7 +106,7 @@
      * but it always takes the form used in formal settings such as banking;
      * for example, "NT$" instead of "$" for TWD in zh-TW.
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public static final int FORMAL_SYMBOL_NAME = 4;
 
@@ -116,7 +116,7 @@
      * The variant symbol for a currency is an alternative symbol that is not
      * necessarily as widely used as the regular symbol.
      *
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public static final int VARIANT_SYMBOL_NAME = 5;
 
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java b/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java
index 07ae888..84bcc88 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java
@@ -164,20 +164,20 @@
      * but not if it is merely a fallback.
      *
      * @see LocaleMatcher.Builder#setDirection(LocaleMatcher.Direction)
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public enum Direction {
         /**
          * Locale matching includes one-way matches such as Breton→French. (default)
          *
-         * @draft ICU 67
+         * @stable ICU 67
          */
         WITH_ONE_WAY,
         /**
          * Locale matching limited to two-way matches including e.g. Danish↔Norwegian
          * but ignoring one-way matches.
          *
-         * @draft ICU 67
+         * @stable ICU 67
          */
         ONLY_TWO_WAY
     }
@@ -522,7 +522,7 @@
          *
          * @param direction the match direction to set.
          * @return this Builder object
-         * @draft ICU 67
+         * @stable ICU 67
          */
         public Builder setDirection(Direction direction) {
             this.direction = direction;
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java b/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java
index 5727b37..7798ead 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/util/ULocale.java
@@ -501,7 +501,7 @@
      * Creates a ULocale from the locale by first canonicalizing the locale according to CLDR.
      * @param locale the ULocale to canonicalize
      * @return the ULocale created from the canonical version of the ULocale.
-     * @draft ICU 67
+     * @stable ICU 67
      */
     public static ULocale createCanonical(ULocale locale) {
         return createCanonical(locale.getName());