summaryrefslogtreecommitdiff
path: root/plugins/InspectionGadgets/test/com/siyeh/igtest/memory/anonymous_inner_class_may_be_static/AnonymousInnerClassMayBeStatic.java
blob: 4641642c09c516a9a90f8895b340ba693d4b7632 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class AnonymousInnerClassMayBeStatic {

  public void foo()
  {
    final Runnable runnable = new <warning descr="Anonymous class 'Runnable' may be a named 'static' inner class">Runnable</warning>(){
      public void run() {
      }
    };
    runnable.run();
    new A() {};
    new <warning descr="Anonymous class 'B' may be a named 'static' inner class">B</warning>() {};
    new <error descr="Cannot resolve symbol 'C'">C</error>() {};
    String localVar = "";
    new <warning descr="Anonymous class 'B' may be a named 'static' inner class">B</warning> () {
      void f() {
        System.out.println(localVar);
      }
    };
  }

  class A {}
  static class B {}

  void m() {
    class C {
    }
    new B() {
      void bla() {
        C b; // reference to local class
      }
    };
    new <warning descr="Anonymous class 'B' may be a named 'static' inner class">B</warning>() {
      void bla() {
        AnonymousInnerClassMayBeStatic.n();
      }
    };
  }

  static void n() {}

  class D {
    {new E().m();}
    class E {
      private void m() {}
    }
  }

  class CC {}
  static class BB<T>  {
    void m() {
      new <warning descr="Anonymous class 'BB<CC>' may be a named 'static' inner class">BB<CC></warning>() {
        class Z {}
      };
    }
  }

  String t = "";

  void m(int p) {
    String s = null;
    new <warning descr="Anonymous class 'Object' may be a named 'static' inner class">Object</warning>() {
      private int a = 1;
      void f() {
        System.out.println(a);
        System.out.println(p);
        System.out.println(s);
        this.g();
      }

      private void g() {}
    };
  }

  void sort(List<String> list) {
    Collections.sort(list, new <warning descr="Anonymous class 'Comparator<String>' may be a named 'static' inner class">Comparator<String></warning>() {
      @Override
      public int compare(String o1, String o2) {
        return o1.toString().compareToIgnoreCase(o2.toString());
      }
    });
  }
}
class One {
  class Two {
    void foo() {
      new Object() {};
    }
  }
}