| 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() {}; |
| } |
| } |
| } |