报告可以安全地替换为 static 内部类的匿名类。 如果某个匿名类没有从周围方法显式引用其封闭实例或局部类,则它可能是 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() {
    }
  }