无法使用下划线重构方法作为lambdas的参数?

 小时候V有时候 发布于 2023-01-03 11:09

我有一个类有一个方法(其中一半不使用他们的参数,因此将其命名为下划线),我只是切换到Java 8.现在我想用lambdas替换它们.

这是我的代码:

interface I {
  void stuffHappened(Integer howManyStuff);
}

public class A {
  void go() {
    I i = new I() {
      public void stuffHappened(Integer _) {
        System.out.println("woah!!");
      }
    };
  }
}

之后:

interface I {
  void stuffHappened(Integer howManyStuff);
}

public class A {
  void go() {
    I i = _ -> System.out.println("woah!!");
  }
}

如您所见,它显然已不再有效,声称使用"_"作为参数名称不再有效.但那么为什么它首先允许这个重构呢?为什么它适用于匿名类,而不是lambdas?这真的是一个新规则吗?或者是IDEA中的某种差异?

我正在使用Intellij-IDEA(第一次使用它),实际上,Android Studio(Beta)0.8.1(使用retrolambda允许在Android上使用lambdas),我认为它使用IDEA.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有