On 10/30/2013 12:52 AM, Peter Levart wrote:

On 10/30/2013 02:57 AM, Joe Darcy wrote:
On 10/29/2013 06:37 PM, Joe Darcy wrote:
Hi Joel,

On 10/29/2013 09:20 AM, Joel Borggrén-Franck wrote:
Hi Joe, Peter,

On 29 okt 2013, at 07:09, Joe Darcy <joe.da...@oracle.com> wrote:



[snip]

I retract my previous comments; I was confusing "annotationType" and "value()" in terms of where they are defined. This version of getDeclaredAnnotationsByType passes the battery of regression tests:

default <T extends Annotation> T[] getDeclaredAnnotationsByType(Class<T> annotationClass) {
        Objects.requireNonNull(annotationClass);
        return AnnotationSupport.
getDirectlyAndIndirectlyPresent(Arrays.stream(getDeclaredAnnotations()).
collect(Collectors.toMap(
(a -> a.annotationType()),
Function.identity(),
((first,second) -> first),
() -> new LinkedHashMap<>() )),
                                            annotationClass);
    }

Hi Joe,

I suggest using method references where possible, which saves from generating two (of three) synthetic methods in AnnotatedElement interface:

                    Collectors.toMap(
                        Annotation::annotationType,
                        Function.identity(),
                        (first, second) -> first,
                        LinkedHashMap::new)



Hi Peter,

Good suggestion; I've made the recommended change:

    http://cr.openjdk.java.net/~darcy/8005294.7/

Thanks for the reviews,

-Joe

Reply via email to