java - Java中如何解析方法引用

标签 java method-reference

Function<String, Integer> f = Integer::new;

Integer i = f.apply("100");

当我们调用f.apply时,它如何转而使用Integer.parseInt

最佳答案

我猜你的问题是:“javac 如何知道在这里调用 parseInt”?

您的代码片段已损坏;泛型脱落了。事实上,您的代码将无法编译,因为引用不明确。如果您将其添加回来,它将正常编译并工作:

Function<String, Integer> f = Integer::new;
Integer i = f.apply("100");

忘记新的 :: 语法或 Function 部分;他们是转移注意力的人。

所以让我们变得更简单:

整数 i = new Integer("100");

这是有效的java;我最终将保留值 100。

它之所以有效是因为......构造函数存在。它被指定精确地作为以 10 为基数的 Integer.parseInt 工作,但它已被弃用,原因有 2 个:[A] 在以下位置调用 new Integer()不推荐使用任何值的 all(使用 Integer.valueOf),并且 [B] 只需调用 parseInt。

关于java - Java中如何解析方法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61090586/

相关文章:

java - 如何从 Arraylist 填充 AlertDialog?

java - 在流收集器中编写 Java 8 方法引用

java - Java 8 中的方法引用是否有具体类型?如果有,它是什么?

java - 如何获取类中所有方法的方法引用(Java)?

java - 为什么方法引用可以使用非最终变量?

java - 方法引用的 Lambda 转换

java - 如何访问此层次结构中的文件?

Java Scheduler 上午 9.30 开始,每 15 分钟运行一次,晚上 8 点结束

java - 尝试添加棉花糖权限支持时无法解析符号 'LocationService'

java - 无法为 Eclipse 项目创建可运行的 jar