jdk/src/java.base/share/classes/java/lang/invoke/MethodHandles.java
changeset 45881 aaec0fbe17ae
parent 45705 a4239e9b21a3
child 46047 97d615d81827
equal deleted inserted replaced
45871:878e21603932 45881:aaec0fbe17ae
   280      * the behavior of the resulting method handles:
   280      * the behavior of the resulting method handles:
   281      * <table class="striped">
   281      * <table class="striped">
   282      * <caption style="display:none">lookup method behaviors</caption>
   282      * <caption style="display:none">lookup method behaviors</caption>
   283      * <thead>
   283      * <thead>
   284      * <tr>
   284      * <tr>
   285      *     <th><a id="equiv"></a>lookup expression</th>
   285      *     <th scope="col"><a id="equiv"></a>lookup expression</th>
   286      *     <th>member</th>
   286      *     <th scope="col">member</th>
   287      *     <th>bytecode behavior</th>
   287      *     <th scope="col">bytecode behavior</th>
   288      * </tr>
   288      * </tr>
   289      * </thead>
   289      * </thead>
   290      * <tbody>
   290      * <tbody>
   291      * <tr>
   291      * <tr>
   292      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)}</td>
   292      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findGetter lookup.findGetter(C.class,"f",FT.class)}</th>
   293      *     <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
   293      *     <td>{@code FT f;}</td><td>{@code (T) this.f;}</td>
   294      * </tr>
   294      * </tr>
   295      * <tr>
   295      * <tr>
   296      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findStaticGetter lookup.findStaticGetter(C.class,"f",FT.class)}</td>
   296      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findStaticGetter lookup.findStaticGetter(C.class,"f",FT.class)}</th>
   297      *     <td>{@code static}<br>{@code FT f;}</td><td>{@code (T) C.f;}</td>
   297      *     <td>{@code static}<br>{@code FT f;}</td><td>{@code (T) C.f;}</td>
   298      * </tr>
   298      * </tr>
   299      * <tr>
   299      * <tr>
   300      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findSetter lookup.findSetter(C.class,"f",FT.class)}</td>
   300      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findSetter lookup.findSetter(C.class,"f",FT.class)}</th>
   301      *     <td>{@code FT f;}</td><td>{@code this.f = x;}</td>
   301      *     <td>{@code FT f;}</td><td>{@code this.f = x;}</td>
   302      * </tr>
   302      * </tr>
   303      * <tr>
   303      * <tr>
   304      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findStaticSetter lookup.findStaticSetter(C.class,"f",FT.class)}</td>
   304      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findStaticSetter lookup.findStaticSetter(C.class,"f",FT.class)}</th>
   305      *     <td>{@code static}<br>{@code FT f;}</td><td>{@code C.f = arg;}</td>
   305      *     <td>{@code static}<br>{@code FT f;}</td><td>{@code C.f = arg;}</td>
   306      * </tr>
   306      * </tr>
   307      * <tr>
   307      * <tr>
   308      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findVirtual lookup.findVirtual(C.class,"m",MT)}</td>
   308      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findVirtual lookup.findVirtual(C.class,"m",MT)}</th>
   309      *     <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
   309      *     <td>{@code T m(A*);}</td><td>{@code (T) this.m(arg*);}</td>
   310      * </tr>
   310      * </tr>
   311      * <tr>
   311      * <tr>
   312      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findStatic lookup.findStatic(C.class,"m",MT)}</td>
   312      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findStatic lookup.findStatic(C.class,"m",MT)}</th>
   313      *     <td>{@code static}<br>{@code T m(A*);}</td><td>{@code (T) C.m(arg*);}</td>
   313      *     <td>{@code static}<br>{@code T m(A*);}</td><td>{@code (T) C.m(arg*);}</td>
   314      * </tr>
   314      * </tr>
   315      * <tr>
   315      * <tr>
   316      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findSpecial lookup.findSpecial(C.class,"m",MT,this.class)}</td>
   316      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findSpecial lookup.findSpecial(C.class,"m",MT,this.class)}</th>
   317      *     <td>{@code T m(A*);}</td><td>{@code (T) super.m(arg*);}</td>
   317      *     <td>{@code T m(A*);}</td><td>{@code (T) super.m(arg*);}</td>
   318      * </tr>
   318      * </tr>
   319      * <tr>
   319      * <tr>
   320      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findConstructor lookup.findConstructor(C.class,MT)}</td>
   320      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findConstructor lookup.findConstructor(C.class,MT)}</th>
   321      *     <td>{@code C(A*);}</td><td>{@code new C(arg*);}</td>
   321      *     <td>{@code C(A*);}</td><td>{@code new C(arg*);}</td>
   322      * </tr>
   322      * </tr>
   323      * <tr>
   323      * <tr>
   324      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflectGetter lookup.unreflectGetter(aField)}</td>
   324      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflectGetter lookup.unreflectGetter(aField)}</th>
   325      *     <td>({@code static})?<br>{@code FT f;}</td><td>{@code (FT) aField.get(thisOrNull);}</td>
   325      *     <td>({@code static})?<br>{@code FT f;}</td><td>{@code (FT) aField.get(thisOrNull);}</td>
   326      * </tr>
   326      * </tr>
   327      * <tr>
   327      * <tr>
   328      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflectSetter lookup.unreflectSetter(aField)}</td>
   328      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflectSetter lookup.unreflectSetter(aField)}</th>
   329      *     <td>({@code static})?<br>{@code FT f;}</td><td>{@code aField.set(thisOrNull, arg);}</td>
   329      *     <td>({@code static})?<br>{@code FT f;}</td><td>{@code aField.set(thisOrNull, arg);}</td>
   330      * </tr>
   330      * </tr>
   331      * <tr>
   331      * <tr>
   332      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</td>
   332      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</th>
   333      *     <td>({@code static})?<br>{@code T m(A*);}</td><td>{@code (T) aMethod.invoke(thisOrNull, arg*);}</td>
   333      *     <td>({@code static})?<br>{@code T m(A*);}</td><td>{@code (T) aMethod.invoke(thisOrNull, arg*);}</td>
   334      * </tr>
   334      * </tr>
   335      * <tr>
   335      * <tr>
   336      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflectConstructor lookup.unreflectConstructor(aConstructor)}</td>
   336      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflectConstructor lookup.unreflectConstructor(aConstructor)}</th>
   337      *     <td>{@code C(A*);}</td><td>{@code (C) aConstructor.newInstance(arg*);}</td>
   337      *     <td>{@code C(A*);}</td><td>{@code (C) aConstructor.newInstance(arg*);}</td>
   338      * </tr>
   338      * </tr>
   339      * <tr>
   339      * <tr>
   340      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</td>
   340      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#unreflect lookup.unreflect(aMethod)}</th>
   341      *     <td>({@code static})?<br>{@code T m(A*);}</td><td>{@code (T) aMethod.invoke(thisOrNull, arg*);}</td>
   341      *     <td>({@code static})?<br>{@code T m(A*);}</td><td>{@code (T) aMethod.invoke(thisOrNull, arg*);}</td>
   342      * </tr>
   342      * </tr>
   343      * <tr>
   343      * <tr>
   344      *     <td>{@link java.lang.invoke.MethodHandles.Lookup#findClass lookup.findClass("C")}</td>
   344      *     <th scope="row">{@link java.lang.invoke.MethodHandles.Lookup#findClass lookup.findClass("C")}</th>
   345      *     <td>{@code class C { ... }}</td><td>{@code C.class;}</td>
   345      *     <td>{@code class C { ... }}</td><td>{@code C.class;}</td>
   346      * </tr>
   346      * </tr>
   347      * </tbody>
   347      * </tbody>
   348      * </table>
   348      * </table>
   349      *
   349      *