当前位置: 首页 > 面试题库 >

通过Java 8中的方法参考调用toString

丁均
2023-03-14
问题内容

我想念什么?为什么我必须在Object::toString下面使用而不是Integer::toString?它与泛型类型擦除有关系吗?

Arrays.asList(1,2,3).stream().map(Integer::toString).forEach(System.out::println); //Won't compile

Arrays.asList(1,2,3).stream().map(Object::toString).forEach(System.out::println); //Compiles and runs fine

问题答案:

这与类型擦除无关。

查看错误消息:

(argument mismatch; invalid method reference
  reference to toString is ambiguous
    both method toString(int) in Integer and method toString() in Integer match)

Integer类有两个toString匹配由预期的功能的界面,方法map()方法。一个是静态的一个int参数,而另一种是toString()重写方法ObjecttoString()

编译器不知道您是否要执行此操作:

Arrays.asList(1,2,3).stream().map(i->Integer.toString(i)).forEach(System.out::println);

或这个 :

Arrays.asList(1,2,3).stream().map(i->i.toString()).forEach(System.out::println);


 类似资料:
  • 本文向大家介绍PHP 通过参考,包括了PHP 通过参考的使用技巧和注意事项,需要的朋友参考一下 示例 这使您可以通过引用允许您修改原始变量的函数或元素来传递变量。 通过引用传递不仅限于变量,还可以通过引用传递以下内容: 新声明,例如 foo(new SomeClass) 从函数返回的引用 数组 “按引用传递”的常见用法是修改数组中的初始值,而不会涉及创建新数组或乱丢您的命名空间的程度。通过引用传递

  • 目前正在学习Java 8 lambda表达式和方法引用。 我想把一个没有参数和返回值的方法作为参数传递给另一个方法。我就是这样做的: 我知道如

  • 我阅读了关于Lambda表达式的Java 8教程,但不太了解“引用特定类型的任意对象的实例方法”的方法引用示例 在同一教程中,有一个示例“引用特定对象的实例方法”,看起来像。 我可以看到这个工作,因为方法compareByName与Comparator.comparelambda(a, b)具有相同的签名- 现在“引用特定类型的任意对象的实例方法”示例使用String::compareToIgno

  • 问题内容: Java8中是否有一种方法可以将方法引用用作对象来使用其方法,例如: 这个问题与无关,仅作为示例,我想对方法参考有答案 问题答案: 您可以编写一个静态方法来执行此操作: 然后,您可以将其放在实用程序类中并静态导入。 或者,创建一个更简单的静态方法,该方法 只 返回给定的函数,以使编译器知道您在做什么:

  • 本文向大家介绍JS中使用apply方法通过不同数量的参数调用函数的方法,包括了JS中使用apply方法通过不同数量的参数调用函数的方法的使用技巧和注意事项,需要的朋友参考一下 apply()方法定义 函数的apply()方法和call方法作用相同,区别在于接收的参数的方式不同。 apply()方法接收两个参数,一个是对象,一个是参数数组。 apply()作用 1、用于延长函数的作用域 示例: 这里

  • 助手代码实用方法 这些方法会帮你更轻松地实现自定义助手代码。 Handlebars.SafeString(string) 防止 string 在模版渲染时转义。 new Handlebars.SafeString("<div>HTML Content!</div>"); 当构建将会被标记为安全的字符串时,为安全起见,任何外部内容都应该使用 Handlebars.escapeExpression