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 * |