6799230: Lazily load java.lang.annotation.Annotation class
Remove the static EMPTY_ANNOTATION_ARRAY field; add AnnotationParser.toArray method Reviewed-by: darcy
This commit is contained in:
parent
700b2220a9
commit
37885fe5f8
@ -3059,14 +3059,12 @@ public final
|
||||
}
|
||||
|
||||
|
||||
private static Annotation[] EMPTY_ANNOTATIONS_ARRAY = new Annotation[0];
|
||||
|
||||
/**
|
||||
* @since 1.5
|
||||
*/
|
||||
public Annotation[] getAnnotations() {
|
||||
initAnnotationsIfNecessary();
|
||||
return annotations.values().toArray(EMPTY_ANNOTATIONS_ARRAY);
|
||||
return AnnotationParser.toArray(annotations);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3074,7 +3072,7 @@ public final
|
||||
*/
|
||||
public Annotation[] getDeclaredAnnotations() {
|
||||
initAnnotationsIfNecessary();
|
||||
return declaredAnnotations.values().toArray(EMPTY_ANNOTATIONS_ARRAY);
|
||||
return AnnotationParser.toArray(declaredAnnotations);
|
||||
}
|
||||
|
||||
// Annotations cache
|
||||
|
@ -626,13 +626,11 @@ public final
|
||||
return (T) declaredAnnotations().get(annotationClass);
|
||||
}
|
||||
|
||||
private static final Annotation[] EMPTY_ANNOTATION_ARRAY=new Annotation[0];
|
||||
|
||||
/**
|
||||
* @since 1.5
|
||||
*/
|
||||
public Annotation[] getDeclaredAnnotations() {
|
||||
return declaredAnnotations().values().toArray(EMPTY_ANNOTATION_ARRAY);
|
||||
return AnnotationParser.toArray(declaredAnnotations());
|
||||
}
|
||||
|
||||
private transient Map<Class, Annotation> declaredAnnotations;
|
||||
|
@ -1018,13 +1018,11 @@ class Field extends AccessibleObject implements Member {
|
||||
return (T) declaredAnnotations().get(annotationClass);
|
||||
}
|
||||
|
||||
private static final Annotation[] EMPTY_ANNOTATION_ARRAY=new Annotation[0];
|
||||
|
||||
/**
|
||||
* @since 1.5
|
||||
*/
|
||||
public Annotation[] getDeclaredAnnotations() {
|
||||
return declaredAnnotations().values().toArray(EMPTY_ANNOTATION_ARRAY);
|
||||
return AnnotationParser.toArray(declaredAnnotations());
|
||||
}
|
||||
|
||||
private transient Map<Class, Annotation> declaredAnnotations;
|
||||
|
@ -705,13 +705,11 @@ public final
|
||||
return (T) declaredAnnotations().get(annotationClass);
|
||||
}
|
||||
|
||||
private static final Annotation[] EMPTY_ANNOTATION_ARRAY=new Annotation[0];
|
||||
|
||||
/**
|
||||
* @since 1.5
|
||||
*/
|
||||
public Annotation[] getDeclaredAnnotations() {
|
||||
return declaredAnnotations().values().toArray(EMPTY_ANNOTATION_ARRAY);
|
||||
return AnnotationParser.toArray(declaredAnnotations());
|
||||
}
|
||||
|
||||
private transient Map<Class, Annotation> declaredAnnotations;
|
||||
|
@ -788,4 +788,16 @@ public class AnnotationParser {
|
||||
for (int i = 0; i < length; i++)
|
||||
skipMemberValue(buf);
|
||||
}
|
||||
|
||||
/*
|
||||
* This method converts the annotation map returned by the parseAnnotations()
|
||||
* method to an array. It is called by Field.getDeclaredAnnotations(),
|
||||
* Method.getDeclaredAnnotations(), and Constructor.getDeclaredAnnotations().
|
||||
* This avoids the reflection classes to load the Annotation class until
|
||||
* it is needed.
|
||||
*/
|
||||
private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0];
|
||||
public static Annotation[] toArray(Map<Class, Annotation> annotations) {
|
||||
return annotations.values().toArray(EMPTY_ANNOTATION_ARRAY);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user