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/