Fri, 30 Nov 2012 15:14:25 +0000
8004102: Add support for generic functional descriptors
Summary: Method references are allowed to have a generic functional interface descriptor target
Reviewed-by: jjg
aoqi@0 | 1 | /* |
aoqi@0 | 2 | * @test /nodynamiccopyright/ |
aoqi@0 | 3 | * @bug 8003280 |
aoqi@0 | 4 | * @summary Add lambda tests |
aoqi@0 | 5 | * This test is for identifying a non-SAM type: Having overloaded methods due to inheritance |
aoqi@0 | 6 | * @compile/fail/ref=NonSAM3.out -XDrawDiagnostics NonSAM3.java Helper.java |
aoqi@0 | 7 | */ |
aoqi@0 | 8 | |
aoqi@0 | 9 | import java.util.Collection; |
aoqi@0 | 10 | import java.util.List; |
aoqi@0 | 11 | |
aoqi@0 | 12 | public class NonSAM3 { |
aoqi@0 | 13 | void method() { |
aoqi@0 | 14 | //all of the following will have compile error: "the target type of a lambda conversion has multiple non-overriding abstract methods" |
aoqi@0 | 15 | FooBar fb = (Number n) -> 100; |
aoqi@0 | 16 | FooBar fb2 = (Integer i) -> 100; |
aoqi@0 | 17 | DE de = (List<Integer> list) -> 100; |
aoqi@0 | 18 | DE de2 = (List<?> list) -> 100; |
aoqi@0 | 19 | DE de3 = (List list) -> 100; |
aoqi@0 | 20 | DE de4 = (Collection<Integer> collection) -> 100; |
aoqi@0 | 21 | DE de5 = (Collection<?> collection) -> 100; |
aoqi@0 | 22 | DE de6 = (Collection collection) -> 100; |
aoqi@0 | 23 | } |
aoqi@0 | 24 | } |