On Wed, 12 Apr 2023 18:19:11 GMT, Michael Strauß <mstra...@openjdk.org> wrote:

> This PR adds the following methods to the `EventTarget` interface:
> 1. `addEventHandler`
> 2. `removeEventHandler`
> 3. `addEventFilter`
> 4. `removeEventFilter`

This PR assumes that changing the first method signature to the second is a 
binary-compatible change:

1. <E extends Event> void addEventHandler(EventType<E>, EventHandler<E>)
2. <E extends Event> void addEventHandler(EventType<E>, EventHandler<? super E>)


To verify this, I've created the following test:

import java.util.function.Consumer;

// Test.java
public class Test {
    public static <T> void test(Consumer<T> c) {
        System.out.println("it works");
    }
}

// Main.java
public class Main {
    public static void main(String[] args) {
        Consumer<String> c = param -> {};
        Test.test(c);
    }
}


Note that `Consumer`, like `EventHandler`, only uses the generic type parameter 
as an _input_ argument.
After compiling both files, I changed the signature of the `test` method to 
`void test(Consumer<? super T>)`.
Then I made sure to _only_ recompile the `Test.java` file and ran the `Main` 
program, which succeeded.

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

PR Comment: https://git.openjdk.org/jfx/pull/1090#issuecomment-1509495524

Reply via email to