报告可以安全地替换为 static 内部类的匿名类。 如果某个匿名类没有从其周围方法中显式引用其封闭实例或局部类,则它可能是 static 内部类。

静态内部类不保留对其封闭实例的隐式引用。 这可以防止常见的内存泄漏,并减少每个类实例使用的内存。

快速修复会将匿名类提取到命名的 static 内部类中。

示例:

  
  void sample(){
    Thread thread = new Thread(new Runnable() {
      @Override
      public void run() {
      }
    });
  }
  

在应用快速修复后:

  
  void sample(){
    Thread thread = new Thread(new Task());
  }

  private static class Task implements Runnable {
    @Override
    public void run() {
    }
  }