|
1 /* |
|
2 * @test /nodynamiccopyright/ |
|
3 * @bug 8062373 |
|
4 * |
|
5 * @summary Test that javac complains when a <> inferred class contains a public method that does override a supertype method. |
|
6 * @author sadayapalam |
|
7 * @compile/fail/ref=Neg15.out Neg15.java -XDrawDiagnostics |
|
8 * |
|
9 */ |
|
10 |
|
11 class Neg15 { |
|
12 |
|
13 interface Predicate<T> { |
|
14 default boolean test(T t) { |
|
15 System.out.println("Default method"); |
|
16 return false; |
|
17 } |
|
18 } |
|
19 |
|
20 |
|
21 static void someMethod(Predicate<? extends Number> p) { |
|
22 if (!p.test(null)) |
|
23 throw new Error("Blew it"); |
|
24 } |
|
25 |
|
26 public static void main(String[] args) { |
|
27 |
|
28 someMethod(new Predicate<Integer>() { |
|
29 public boolean test(Integer n) { |
|
30 System.out.println("Override"); |
|
31 return true; |
|
32 } |
|
33 boolean test(Integer n, int i) { |
|
34 System.out.println("Override"); |
|
35 return true; |
|
36 } |
|
37 protected boolean test(Integer n, int i, int j) { |
|
38 System.out.println("Override"); |
|
39 return true; |
|
40 } |
|
41 private boolean test(Integer n, int i, long j) { |
|
42 System.out.println("Override"); |
|
43 return true; |
|
44 } |
|
45 }); |
|
46 |
|
47 someMethod(new Predicate<>() { |
|
48 public boolean test(Integer n) { // bad. |
|
49 System.out.println("Override"); |
|
50 return true; |
|
51 } |
|
52 boolean test(Integer n, int i) { // bad, package access. |
|
53 System.out.println("Override"); |
|
54 return true; |
|
55 } |
|
56 protected boolean test(Integer n, int i, int j) { // bad, protected access. |
|
57 System.out.println("Override"); |
|
58 return true; |
|
59 } |
|
60 private boolean test(Integer n, int i, long j) { // OK, private method. |
|
61 System.out.println("Override"); |
|
62 return true; |
|
63 } |
|
64 }); |
|
65 } |
|
66 } |