<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Werner,<br>
    I have a question on type annotations in lambda expressions.<br>
    Are these not analogous in their annotations? One is a local class
    and another a local class in a lambda expression.<br>
    Only the type-annotations show up in the lambda expression.<br>
    <br>
    In T14$1inner there are 2 TypeAnnotations and 2 Annotations.<br>
    <small><tt>&nbsp; java.lang.Class&lt;?&gt; icc;<br>
        &nbsp;&nbsp;&nbsp; descriptor: Ljava/lang/Class;<br>
        &nbsp;&nbsp;&nbsp; flags:<br>
        &nbsp;&nbsp;&nbsp; Signature: #10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //
        Ljava/lang/Class&lt;*&gt;;<br>
        &nbsp;&nbsp;&nbsp; RuntimeVisibleAnnotations:<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0: #12()<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1: #13()<br>
        &nbsp;&nbsp;&nbsp; RuntimeVisibleTypeAnnotations:<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0: #12(): FIELD<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1: #13(): FIELD</tt></small><br>
    <br>
    In T14l$1inner(lambda expression) there are 2 TypeAnnotations and 0
    Annotations.<br>
    <small><tt>&nbsp; java.lang.Class icc;<br>
        &nbsp;&nbsp;&nbsp; descriptor: Ljava/lang/Class;<br>
        &nbsp;&nbsp;&nbsp; flags:<br>
        &nbsp;&nbsp;&nbsp; RuntimeVisibleTypeAnnotations:<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0: #10(): FIELD<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1: #11(): FIELD</tt></small><br>
    <br>
    source:<br>
    <br>
    <tt>import java.lang.annotation.*;<br>
      import static java.lang.annotation.RetentionPolicy.*;<br>
      import static java.lang.annotation.ElementType.*;<br>
      import java.util.List;<br>
      import java.util.ArrayList;<br>
      <br>
      class T14{<br>
      &nbsp;&nbsp;&nbsp; void test() {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class innerClass&nbsp;&nbsp; {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @A @B Class&lt;?&gt; icc; //2 Ann, 2 TypeAnn<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; innerClass(Class&lt;?&gt; _c) { icc = _c; } //2
      TypeAnn<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String getString() { return icc.toString(); } //2
      Ann,2TypeAnn<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String s = new innerClass(T14.class).getString();<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(s);<br>
      &nbsp;&nbsp;&nbsp; }<br>
      }<br>
      <br>
      //Source2:<br>
      class T14l{<br>
      &nbsp;&nbsp;&nbsp; interface MapFun&lt;T, R&gt; {&nbsp; R m( T n); }<br>
      &nbsp;&nbsp;&nbsp; MapFun&lt;Class&lt;?&gt;,String&gt; cs;<br>
      <br>
      &nbsp;&nbsp;&nbsp; void test() {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cs = c -&gt; {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class innerClass&nbsp;&nbsp; {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @A @B Class&lt;?&gt; icc; //2 Ann, 2 TypeAnn<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; innerClass(Class&lt;?&gt; _c) { icc = _c; }
      //2 TypeAnn<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String getString() { return icc.toString(); }
      //2 Ann,2TypeAnn<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new innerClass(c).getString();<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("cs.m : " + cs.m(Integer.class));<br>
      &nbsp;&nbsp;&nbsp; }<br>
      }<br>
      <br>
      // annotations<br>
      @Retention(</tt><tt>RUNTIME</tt><tt>)
      @Target({TYPE_USE,TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,ANNOTATION_TYPE,PACKAGE})
      @Repeatable( AC.class ) @interface A { }<br>
      @Retention(RUNTIME)
      @Target({TYPE_USE,TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,ANNOTATION_TYPE,PACKAGE})
      @interface AC { A[] value(); }<br>
      @Retention(</tt><tt>RUNTIME</tt><tt>)
      @Target({TYPE_USE,TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,ANNOTATION_TYPE,PACKAGE})
      @Repeatable( BC.class ) @interface B { }<br>
      @Retention(</tt><tt>RUNTIME</tt><tt>)
      @Target({TYPE_USE,TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,ANNOTATION_TYPE,PACKAGE})
      @interface BC { B[] value(); }</tt><br>
    <br>
    <br>
  </body>
</html>