Method Class | getAnnotation() method in Java

The java.lang.reflect.Method.getAnnotation(Class< T > annotationClass) method of Method class returns Method objects’s annotation for the specified type passed as parameter if such an annotation is present, else null. This is important method to get annotation for Method object.

Syntax:

public <T extends Annotation> T getAnnotation(Class<T> annotationClass)

Parameter: This method takes a mandatory parameter annotationClass which is the Class object of the annotation type.



Return Value: This method returns the method’s annotation for the specified annotation type if present on this element, else null.

Exception: This method throws NullPointerException if the given annotation class is null

Below program illustrates getAnnotation(Class annotationClass) method of Method class:

Example 1: This program prints method’s annotation for the specified annotation type given as parameter to getAnnotation() of Method Object representing getCustomAnnotation() method of GFG class.

In thi,s example a single class is used and class contains both methods which are main method and method with annotation.

filter_none

edit
close

play_arrow

link
brightness_4
code

// Program Demonstrate getAnnotation(Class<T> annotationClass) method
// of Method Class.
  
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
  
// create a custom Annotation
@Retention(RetentionPolicy.RUNTIME)
@interface Annotation {
  
    // This annotation has two attributes.
    public String key();
  
    public String value();
}
  
// create the Main Class
public class GFG {
  
    // call Annotation for method and pass values for annotation
    @Annotation(key = "AvengersLeader", value = "CaptainAmerica")
    public static void getCustomAnnotation()
    {
  
        try {
  
            // create class object for class name GFG
            Class c = GFG.class;
  
            // get method name getCustomAnnotation as Method object
            Method[] methods = c.getMethods();
            Method method = null;
            for (Method m : methods) {
                if (m.getName().equals("getCustomAnnotation"))
                    method = m;
            }
  
            // get Annotation of Method object m by passing
            // Annotation class object as parameter
            Annotation anno = method.getAnnotation(Annotation.class);
  
            // print Annotation Details
            System.out.println("Annotation for Method Object"
                               + " having name: " + method.getName());
            System.out.println("Key Attribute of Annotation: "
                               + anno.key());
            System.out.println("Value Attribute of Annotation: "
                               + anno.value());
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
  
    // create main method
    public static void main(String args[])
    {
        getCustomAnnotation();
    }
}

chevron_right


Output:

Annotation for Method Object having name: getCustomAnnotation
Key Attribute of Annotation: AvengersLeader
Value Attribute of Annotation: CaptainAmerica

Example 2: This program prints method’s annotation for the specified annotation type given as parameter to getAnnotation() of Method Object representing getCustomAnnotation() method of GFG class.

In this example a two classes is used.One class contains main method which creates the method object and applying getAnnotation() method and other class contains method with some annotation.

filter_none

edit
close

play_arrow

link
brightness_4
code

// Program Demonstrate getAnnotation(Class<T> annotationClass) method
// of Method Class.
  
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
  
public class GFG {
    public static void main(String[] args)
    {
  
        // get array Method objects
        Method[] methods = GFGDemoClass.class.getMethods();
  
        // get Annotation
        SelfCreatedAnnotation annotation = methods[0]
                                               .getAnnotation(
                                                   SelfCreatedAnnotation
                                                       .class);
  
        // Print annotation attribute
        System.out.println("key: " + annotation.key());
        System.out.println("value: " + annotation.value());
    }
}
  
// Another class on which we want to apply the annotation
class GFGDemoClass {
    private String field;
  
    // create annotation
    @SelfCreatedAnnotation(key = "getField",
                           value = "getting field attribute")
    public String
    getField()
    {
        return field;
    }
}
  
// create custom annotation having two values
@Retention(RetentionPolicy.RUNTIME)
@interface SelfCreatedAnnotation {
    public String key();
    public String value();
}

chevron_right


Output:

key: getField
value: getting field attribute

Reference: https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#getAnnotation-java.lang.Class-



My Personal Notes arrow_drop_up

I am a Developer I love to code and bring my ideas alive

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.