<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    As a note, if i put the same annotations on the getString() methods,
    I see 4(2+2) in both T14$1inner and T14l$1inner, so it's just on
    fields.<br>
    <br>
    -steve<br>
    <br>
    On 3/6/2013 11:39 AM, Steve Sides wrote:
    <blockquote cite="mid:51379B7C.4050607@oracle.com" type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-1">
      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>
    </blockquote>
    <br>
  </body>
</html>