fork of https://github.com/sourcegraph/zoekt
1package minimized;
2
3public class InnerClasses {
4
5 private final int exampleField;
6
7 private static final String STRING = "asdf";
8
9 private static final int top = 5;
10 private static final int bottom = 10;
11
12 public InnerClasses(int exampleField) {
13 this.exampleField = exampleField;
14 }
15
16 public enum InnerEnum {
17 A,
18 B,
19 C
20 }
21
22 public interface InnerInterface<A, B> {
23 B apply(A a);
24 }
25
26 public @interface InnerAnnotation {
27 int value();
28 }
29
30 @SuppressWarnings(STRING + " ")
31 @InnerAnnotation(top / bottom)
32 public static class InnerStaticClass {
33
34 public static void innerStaticMethod() {}
35 }
36
37 public class InnerClass implements InnerInterface<Integer, Integer> {
38 private final int field;
39
40 public InnerClass(int field) {
41 this.field = field;
42 }
43
44 public void innerMethod() {
45 System.out.println(field + exampleField);
46 }
47
48 @Override
49 public Integer apply(Integer integer) {
50 return field * integer;
51 }
52 }
53
54 private static <A, B> B runInnerInterface(InnerInterface<A, B> fn, A a) {
55 return fn.apply(a);
56 }
57
58 public static void testEnum(InnerEnum magicEnum) {
59 if (System.nanoTime() > System.currentTimeMillis()) {
60 magicEnum = InnerEnum.B;
61 }
62 switch (magicEnum) {
63 case B:
64 System.out.println("b");
65 break;
66 case A:
67 System.out.println("a");
68 break;
69 default:
70 break;
71 }
72 if (magicEnum == InnerEnum.A) System.out.println("a");
73 else if (magicEnum == InnerEnum.C) System.out.println("b");
74 else System.out.println("c");
75 }
76
77 public static void testAnon() {
78 InnerInterface<String, String> fn =
79 new InnerInterface<String, String>() {
80 @Override
81 public String apply(String s) {
82 return s + "b";
83 }
84 };
85 System.out.println(fn.apply("a"));
86 }
87
88 public static String app() {
89 int a = 42;
90 InnerStaticClass.innerStaticMethod();
91 InnerClasses innerClasses = new InnerClasses(a);
92 InnerClass innerClass = innerClasses.new InnerClass(a);
93 innerClass.innerMethod();
94 System.out.println(runInnerInterface(innerClass, a));
95 testEnum(InnerEnum.A);
96 testAnon();
97 return "";
98 }
99}