Single Abstract Method for SAMs cannot be polymorphic

Grégoire Neuville gregoire.neuville at gmail.com
Tue Apr 2 13:04:32 PDT 2013


Hi all,

The below code :

public class TestGenericSAM {

  class Gen<B> {}

  @FunctionalInterface
  interface CoArbitrary<A> {
    abstract <B> Gen<B> coarbitrary(A a, Gen<B> g);
  }

  void test() {
    CoArbitrary<?> coArb = (a, g) -> new Gen<>();
  }
}

doesn't compile. I guess this is by design (the annotation alone is marked
as erroneous by IntelliJ), but I'm just wondering why.

Thanks a lot for any explanation !

-- 
Grégoire Neuville


More information about the lambda-dev mailing list