java.lang.reflect.Constructor.getParameterAnnotations() Method Example



The java.lang.reflect.Constructor.getParameterAnnotations() method returns an array of arrays that represent the annotations on the formal parameters, in declaration order, of the method represented by this Constructor object. (Returns an array of length zero if the underlying method is parameterless. If the method has one or more parameters, a nested array of length zero is returned for each parameter with no annotations.) The annotation objects contained in the returned arrays are serializable. The caller of this method is free to modify the returned arrays; it will have no effect on the arrays returned to other callers.


Following is the declaration for java.lang.reflect.Constructor.getParameterAnnotations() method.

public Annotation[][] getParameterAnnotations()


the simple name of the underlying member.


The following example shows the usage of java.lang.reflect.Constructor.getParameterAnnotations() method.

Live Demo
package com.tutorialspoint;

import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Constructor;

public class ConstructorDemo {
   public static void main(String[] args) {

      Constructor[] constructors = SampleClass.class.getConstructors();
      Annotation[][] annotations = constructors[1].getParameterAnnotations();
      for(Annotation[] annotation1 : annotations){
         for(Annotation annotation : annotation1){
            if(annotation instanceof CustomAnnotation){
               CustomAnnotation customAnnotation = (CustomAnnotation) annotation;
               System.out.println("name: " +;
               System.out.println("value: " + customAnnotation.value());

@CustomAnnotation(name = "SampleClass",  value = "Sample Class Annotation")
class SampleClass {
   private String sampleField;

   public SampleClass(){

   public SampleClass(@CustomAnnotation(name="sampleClassConstructor",  
      value = "Sample Constructor Annotation") String sampleField){
      this.sampleField = sampleField;

   public String getSampleField() {
      return sampleField;

   public void setSampleField(String sampleField) {
      this.sampleField = sampleField;

@interface CustomAnnotation {
   public String name();
   public String value();

Let us compile and run the above program, this will produce the following result −

name: sampleClassConstructor
value: Sample Constructor Annotation