title: what is the values() that I have seen in various CDI qualifiers in java?
body: <p>I have seen various references to <code>values()</code> inside <code>@Qualifier</code> definitions.
  I understand <code>@Qualifier</code> to be a tagging system, yet you define them as an interface.</p>
  
  <p>An interface can allow enums, but I don't understand the word <code>values()</code> that I've seen in the two unrelated examples I've listed below.</p>
  
  <p>Could you please explain to me the word values() means?</p>
  
  <pre><code>@Qualifier
  @Retention(RUNTIME)
  @Target({FIELD, TYPE, METHOD})
  public @interface NumberOfDigits {
      Digits value();
  }
  
  public enum Digits {
      TWO,
      EIGHT,
      TEN,
      THIRTEEN
  }
  </code></pre>
  
  <hr>
  
  <pre><code>package com.byteslounge.bean;
  
  import static java.lang.annotation.ElementType.FIELD;
  import static java.lang.annotation.ElementType.TYPE;
  import static java.lang.annotation.ElementType.METHOD;
  import static java.lang.annotation.RetentionPolicy.RUNTIME;
  import java.lang.annotation.Retention;
  import java.lang.annotation.Target;
  
  import javax.inject.Qualifier;
  
  @Qualifier
  @Retention(RUNTIME)
  @Target({FIELD, TYPE, METHOD})
  public @interface MessageTransport {
  
    MessageTransportType value();
  
  }
  </code></pre>