当前位置: 首页 > 知识库问答 >
问题:

如何将System.out.println的引用分配给变量?

山寒
2023-03-14

我想将引用分配给变量p:

Function<?, Void> p = System.out::println; // [1]

这样我就可以像这样使用它:

p("Hello world"); // I wish `p` to behave exactly same as `System.out.println`

表达式[1]产生编译错误,如何解决?

线程"main"中的异常java.lang.错误:未解决的编译问题:

PrintStream类型中的println(Object)类型为void,这与描述符的返回类型void不兼容

如果将Void更改为val,则错误变为:

线程“main”java中出现异常。lang.错误:未解决的编译问题:语法错误,插入“维度”以完成ReferenceType

共有2个答案

刘博文
2023-03-14
PrintStream out = System.out;
out.println("helo world");

为什么不保存系统。将输出到变量中,然后使用它?

另一种解决方案是使用字符串,以避免对println()进行编译时间检查。format()函数。您可以将其添加到变量中:

BiConsumer<String, Object> println = (format, args) -> System.out.println(String.format(format, args));
println.accept("hello world", null);
张毅
2023-03-14

不幸的是,您不能将System.out.println的所有重载放入一个变量中,这似乎就是您在这里尝试做的。此外,您应该使用函数接口消费者而不是函数

您可以将最通用的System.out.println重载存储消费者中,即接受对象的重载

Consumer<Object> println = System.out::println;
println.accept("Hello World!");

或者,如果您只需要接受字符串的重载,

Consumer<String> println = System.out::println;

请注意,无法通过功能接口直接实现所需的语法(print(“Hello World”))。

另请注意,如果您将字符[]传递给println。接受,它的行为将与系统不同。出来println(char[])。如果这让您感到困扰,您可以使用静态导入:

import static java.lang.System.out;

然后你可以做:

out.println(...);
 类似资料:
  • 问题内容: 我正在使用以下代码: 该值不警报。怎么了 问题答案: 实质上:

  • 问题内容: 我正在使用React使用渲染多个数据。 如何禁用列表中的单击按钮? 这是我的代码: 使用不起作用…我认为我无法添加状态,因为有多个按钮。 问题答案: 您应该使用而不是ref,并且是的,您需要多个ref,一个数组应该很好 根据文档: React支持可以附加到任何组件的特殊属性。ref属性具有一个功能,并且在 安装或卸载组件后立即执行。 在HTML元素上使用ref属性时,会 接收基础DOM

  • 问题内容: 我正在使用Spring MVC。我有一个带有很多静态变量的注释类。我想使用application.properties文件中的值实例化它们。 例如在中,我有: 然后在课堂上是: 我得到了 我也尝试过 接着: 它给出了相同的错误。 问题答案: 你不必在静态字段中保留任何属性。 你不知道何时修改此静态字段 你不知道哪个线程修改了它的价值 任何时候任何线程都可以更改此静态字段的值,并且你被拧

  • 问题内容: 仅仅使用Java 8中的新lambda和功能特性,我不确定如何做到这一点。 例如,以下内容有效: 但是以下内容给我语法错误: 有任何想法吗? 问题答案: 您已经忘记了: 运行:

  • 问题内容: 假设我有一个功能 现在,我想将函数分配给一个名为的变量,这样,如果我使用,它将再次调用该函数。如果我只是做作业,它就会返回。 问题答案: 您根本不调用该函数。 括号告诉蟒蛇,你调用的函数,所以当你把它们放在那里,它调用的功能,并指定值 返回 的(在这种情况下)。

  • 目前,我遇到了一个与将Golang变量分配给Javascript变量相关的问题。我正在使用Golang模板,因此,我从后端发送了一个JSON变量,就像这样: 如您所见,我有一个切片,将其转换为Json,然后将Json转换为string,并将其发送到模板。然后,在前端我需要把它赋给一个变量,它应该是有效的JSON,我有这个: 但是,我得到的是语法错误:预期的属性名,得到的是“{” 所以,我的问题是: