Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8900377
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 15, 20262026-06-15T01:05:19+00:00 2026-06-15T01:05:19+00:00

It took me a while to figure out that I was not making a

  • 0

It took me a while to figure out that I was not making a mistake in annotating my method parameters.

But I am still not sure why, in the following code example, the way no. 1 does not work:

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

public class AnnotationTest {

    @Retention(RetentionPolicy.RUNTIME)
    @interface MyAnnotation {
        String name() default "";
        }

    public void myMethod(@MyAnnotation(name = "test") String st) {

    }

    public static void main(String[] args) throws NoSuchMethodException, SecurityException {
        Class<AnnotationTest> clazz = AnnotationTest.class;
        Method method = clazz.getMethod("myMethod", String.class);

        /* Way no. 1 does not work*/
        Class<?> c1 = method.getParameterTypes()[0];
        MyAnnotation myAnnotation = c1.getAnnotation(MyAnnotation.class);
        System.out.println("1) " + method.getName() + ":" + myAnnotation);

        /* Way no. 2 works */
        Annotation[][] paramAnnotations = method.getParameterAnnotations();
        System.out.println("2) " + method.getName() + ":" + paramAnnotations[0][0]);
    }

}

Output:

    1) myMethod:null
    2) myMethod:@AnnotationTest$MyAnnotation(name=test)

Is it just a flaw in the annotation imnplementation in Java?
Or is there a logical reason why the class array returned by Method.getParameterTypes() does not hold the parameter annotations?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-15T01:05:20+00:00Added an answer on June 15, 2026 at 1:05 am

    This is not a flaw in the implementation.

    A call to Method#getParameterTypes() returns an array of the parameters’ types, meaning their classes. When you get the annotation of that class, you are getting the annotation of String rather than of the method parameter itself, and String has no annotations (view source).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

This took me a while to figure out and I found the answer on
It took me a while to figure out why some cout output seem to
I'm sharing this as it took me A while to figure out. This is
I have a data access class that took me a while to get working.
Okay, it took me a little while to narrow down this problem, but it
it took me some time to find out that both Eclipse and Aptana get
I just ran into a piece of code that not only compiles, but gives
In an operating systems course I took a while ago we were working on
I stumbled upon this problem and it took my a while to realise what
I try for a little while set up django-mptt in my project. I took

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.