RFR: 8263102: Expand documention of Method.isBridge [v3]

RĂ©mi Forax github.com+828220+forax at openjdk.java.net
Tue Mar 9 07:23:07 UTC 2021


On Tue, 9 Mar 2021 03:27:29 GMT, Joe Darcy <darcy at openjdk.org> wrote:

>> The existing documentation of Method.isBridge isn't terribly helpful to the reader. This RFE proposes to given a common example of how bridge methods are used. The JLS does *not* have a section discussing bridge methods in detail; bridge methods are a compilation technique for lowering the Java language to the JVM, they are not a language feature per se. The example given is not exhaustive; there can be and are other uses of bridge methods.
>> 
>> Once the text is agreed to; I'll update the copyright year as well.
>
> Joe Darcy has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Respond to review feedback.

src/java.base/share/classes/java/lang/reflect/Method.java line 589:

> 587:      * different return type, the virtual machine does not.
> 588:      * A
> 589:      * common case where covariant overrides are used is for a {@link

I think the example should be clearer because here, you don't show the code of EnumSet.clone().
I wonder if it's not easier if all the code is visible
  interface I {
    Object m();
  }
  class A implements I {
    String m() { return "hello"; }
  }
so you can explain that the VM do the dispatch on I::m()Object so the compiler has to insert a method A::m()Object,
the bridge method with this pseudo-code
  class A implements I {
    /* bridge */ Object m() { return m(); } // calls m()String
    String m()  { return "hello"; }
  }

-------------

PR: https://git.openjdk.java.net/jdk/pull/2852


More information about the core-libs-dev mailing list