How to Add Type and Repeating Annotations to Code in Java 8
See Java: Tips and Tricks for similar articles.Java developers typically need to store objects of a given type in a data structure such as an array. An efficient technique to achieve this goal is available
in Java 8 by adding type and repeating annotations to your Java application. The type annotation permits the developer to use an annotation in place of a class reference. The
repeating annotation, @Repeatable
, calls out an annotated class that serves as the container for the objects.
To understand how to add type and repeating annotations to Java 8 code, follow these 10 steps.
- Open your text editor and create the Java program that will define the class that we wish to create, in this case a musical instrument.
Type in the following Java statements:
The class is not a class at all! Instead, you have coded an interface that defines the annotation methods that each have default implementations. Notice the
import java.lang.annotation.*; @Repeatable(value=MusicalInstruments.class) public @interface MusicalInstrument { String name() default ""; double price() default 0.0; }
@Repeatable
annotation indicates repeating instances of musical instrument can be stored in a collection (e.g., an array) returned by thevalue
method in the referenced interface (in this caseMusicalInstruments
that you will code in a later step). - Save your file as
MusicalInstrument.java
. - Open a command prompt and navigate to the directory containing your new Java program. Then type in the command to compile
the source and hit Enter:
- Now you will create the interface that was referenced in the
MusicalInstrument
interface by means of the@Repeatable
annotation. In your text editor, create the Java interface namedMusicalInstruments
. Type in the following Java statements:Notice that the interface defines one method,import java.lang.annotation.*; @Retention( RetentionPolicy.RUNTIME ) public @interface MusicalInstruments { MusicalInstrument[] value(); }
value
, that returns an array of typeMusicalInstrument
. Recall that this method name was specified in theMusicalInstrument
interface when the@Repeatable
annotation was referenced. The retention policy specified by the@Retention
annotation indicates that the array is to be retained at runtime. - Save your file as
MusicalInstruments.java
. - Open a command prompt and navigate to the directory containing your Java program. Then type in the command to compile
the source and hit Enter:
- You are now ready to create your tester program.
In your text editor, type in the following Java statements:
The
import java.lang.annotation.*; @MusicalInstrument(name="Piano", price=1200.00) @MusicalInstrument(name="Trumpet", price=200) @MusicalInstrument(name="Clarinet", price=450) public class AddTypeAndRepeatingAnnotations { public static void main (String args[]) { // Retrieve annotations by type, i.e., MusicalInstrument // Returns an array MusicalInstrument[] annotations=AddTypeAndRepeatingAnnotations.class.getAnnotationsByType(MusicalInstrument.class); for (MusicalInstrument mI : annotations) { System.out.println(mI); } // Retrieve annotations using container class, i.e., MusicalInstruments // Returns an object of type container class MusicalInstruments instruments=AddTypeAndRepeatingAnnotations.class.getAnnotation(MusicalInstruments.class); for (MusicalInstrument mI : instruments.value()) { System.out.println(mI.name() + " cost: " + mI.price()); } } }
@MusicalInstrument
annotation is used to create each musical instrument that will be stored in the array. Thename
andprice
attributes correspond to the interface methods and provide the values returned by each method. ThegetAnnotationsByType
method is used to display the@MusicalInstrument
annotations used by this class. The classes that result from using the annotation are returned as an array. ThegetAnnotation
method returns the result of using the@MusicalInstruments
annotation. This result is a collection of musical instruments. Thefor
loop is used to display the collection contents. - Save your file as
AddTypeAndRepeatingAnnotations.java
. - Open a command prompt and navigate to the directory containing your Java program. Then type in the command to compile
the source and hit Enter:
- You are ready test your Java program. Type in the command to run the Java runtime launcher and hit Enter.
Notice the output shows the musical instruments created by calling the annotation and the musical instruments stored in the array.
Related Articles
- How to Check Object Type in Java
- How to Create a Jar File in Java
- How to Compile Packages in Java
- How to Throw an Exception in Java
- How to Create an Exception Class in Java
- How to Use the super Keyword to Call a Base Class Constructor in Java
- How to Use the Comparator.comparing Method in Java 8
- How to Use System.in in Java
- How to Call an Interface Method in Java
- How to Add a Time Zone in the Java 8 Date/Time API
- How to Rethrow an Exception in Java
- How to Use the instanceof Operator with a Generic Class in Java
- How to Instantiate an Object in Java
- How to Filter Distinct Elements from a Collection in Java 8
- How to Create a Derived Class in Java
- How to Skip Elements with the Skip Method in Java 8
- How to Create a Java Bean
- How to Implement an Interface in Java
- How to Compare Two Objects with the equals Method in Java
- How to Set PATH from JAVA_HOME
- How to Prevent Race Conditions in Java 8
- How to Write a Block of Code in Java
- How to Display the Contents of a Directory in Java
- How to Group and Partition Collectors in Java 8
- How to Create a Reference to an Object in Java
- How to Reduce the Size of the Stream with the Limit Method in Java 8
- How to Write an Arithmetic Expression in Java
- How to Format Date and Time in the Java 8 Date/Time API
- How to Use Comparable and Comparator in Java
- How to Break a Loop in Java
- How to Use the this Keyword to Call Another Constructor in Java
- How to Write a Unit Test in Java
- How to Declare Variables in Java
- How to Override Base Class Methods with Derived Class Methods in Java
- How to Use Serialized Objects in Java
- How to Write Comments in Java
- How to Implement Functional Interfaces in Java 8
- How to Write Type Parameters with Multiple Bounds in Java
- How to Add Type and Repeating Annotations to Code in Java 8 (this article)
- How to Use Basic Generics Syntax in Java
- How to Map Elements Using the Map Method in Java 8
- How to Work with Properties in Java
- How to Write while and do while Loops in Java
- How to Use the finally Block in Java
- How to Write for-each Loops in Java
- How to Create a Method in Java
- How to Continue a Loop in Java
- How to Handle Java Files with Streams
- How to Create an Interface Definition in Java
- How Default Base Class Constructors Are Used with Inheritance