import
java.lang.annotation.Annotation;
import
java.lang.annotation.Retention;
import
java.lang.annotation.RetentionPolicy;
import
java.lang.reflect.Method;
public
class
GFG {
public
static
void
main(String[] args)
{
try
{
Class classobj = GFG.
class
;
Method[] methods = classobj.getMethods();
for
(Method m : methods) {
if
(m.getName().equals("getValues")
|| m.getName().equals("setValue")) {
Annotation[][] Arrayannotations
= m
.getParameterAnnotations();
System.out.println("Method Name: "
+ m.getName());
printAnnotation(Arrayannotations);
}
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
public
void
setValue()
{
System.out.println("setValue");
}
public
String
getValues(
@AnnotationDemo
(field1 = "GFG",
field2 = "Works",
field3 = "fine",
field4 = "Hurray!!")
String value)
{
System.out.println("setManyValues");
return
value;
}
public
static
void
printAnnotation(Annotation[][] Arrayannotations)
{
System.out.println("Annotation length: "
+ Arrayannotations.length);
for
(Annotation[] annotationRow : Arrayannotations) {
for
(Annotation annotation : annotationRow) {
AnnotationDemo anndemo = (AnnotationDemo)annotation;
System.out.println("field1 of annotation: "
+ anndemo.field1());
System.out.println("field2 of annotation: "
+ anndemo.field2());
System.out.println("field3 of annotation: "
+ anndemo.field3());
System.out.println("field4 of annotation: "
+ anndemo.field4());
}
}
}
}
@Retention
(RetentionPolicy.RUNTIME)
@interface
AnnotationDemo {
public
String field1();
public
String field2();
public
String field3();
public
String field4();
}