View Javadoc
1   /*
2   com.puppycrawl.tools.checkstyle.checks.naming.MemberNameCheck
3   format = (default)^[a-z][a-zA-Z0-9]*$
4   applyToPublic = (default)true
5   applyToProtected = (default)true
6   applyToPackage = (default)true
7   applyToPrivate = (default)true
8   
9   
10  */
11  
12  package com.puppycrawl.tools.checkstyle.grammar.java8;
13  
14  import java.lang.annotation.ElementType;
15  import java.lang.annotation.Target;
16  import java.util.List;
17  import java.util.function.Supplier;
18  
19  
20  public class InputMethodReferences7 { // ok
21      interface LambdaInt {
22          <S, T> void m(S p1, T p2);
23      }
24  
25      interface MyFunctionalInterface {
26          void invokeMethodReference();
27      }
28  
29      static class LambdaImpl implements LambdaInt {
30          <S, T> LambdaImpl(S p1, T p2) {
31          }
32  
33          public <S, T> void m(S p1, T p2) {
34          }
35      }
36  
37      public void m() {
38      }
39  
40      public void main(String[] args) {
41          MyFunctionalInterface fi = new InputMethodReferences7()::<Integer, String, Long> m;
42          LambdaInt li = LambdaImpl::<@TA Object, @TB Object> new;
43          Supplier s = Bar::<String> m;
44          li = li::<@TA Object, @TB Object> m;
45          s = Bar::<List<String>> m;
46          s = Bar::<List<List<?>>> m;
47      }
48  }
49  
50  class Bar<T> {
51      static Object m() {
52          return null;
53      }
54  }
55  
56  @Target({ ElementType.TYPE_USE, ElementType.TYPE_PARAMETER })
57  @interface TA {
58  }
59  
60  @Target({ ElementType.TYPE_USE, ElementType.TYPE_PARAMETER })
61  @interface TB {
62  }