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

如何在Java 8中将方法存储在变量中?

朱梓
2023-03-14
问题内容

是否可以将方法存储到变量中?就像是

 public void store() {
     SomeClass foo = <getName() method>;
     //...
     String value = foo.call();
 }

 private String getName() {
     return "hello";
 }

我认为使用lambda可以实现,但我不知道如何。


问题答案:

是的,您可以对任何方法进行变量引用。对于简单的方法,通常使用java.util.function.*class就足够了。这是一个工作示例:

import java.util.function.Consumer;

public class Main {

    public static void main(String[] args) {
        final Consumer<Integer> simpleReference = Main::someMethod;
        simpleReference.accept(1);

        final Consumer<Integer> another = i -> System.out.println(i);
        another.accept(2);
    }

    private static void someMethod(int value) {
        System.out.println(value);
    }
}

如果您的方法与这些接口都不匹配,则可以定义自己的接口。唯一的要求是必须有一个抽象方法。

public class Main {

    public static void main(String[] args) {

        final MyInterface foo = Main::test;
        final String result = foo.someMethod(1, 2, 3);
        System.out.println(result);
    }

    private static String test(int foo, int bar, int baz) {
        return "hello";
    }

    @FunctionalInterface // Not required, but expresses intent that this is designed 
                         // as a lambda target
    public interface MyInterface {
        String someMethod(int foo, int bar, int baz);
    }
}


 类似资料:
  • 问题内容: 我想将生成的图像存储在变量中,以将其用作嵌入式图像。 这些功能都不适合我的用例: -将其写入标准输出。这确实有帮助..因为我必须将图像嵌入html文件中。 /从命令行执行时不执行任何操作 问题答案: 您尝试过还是等效的?

  • 所以,我正在运行一个童子军服务器,为此,我制作了一个机器人。为了更好的组织,我们一直在努力获得每个人的真实姓名。机器人将要求他们的名字,他们将键入!命名为Travis_c。然后我希望它将他们的不一致用户名存储在一个变量中,并发送一条消息告诉我trullycool= ' ' 我有问题用户=message.author()我知道如果我想回复我做的事情message.reply但在我的情况下不会工作。

  • 问题内容: 我想将要在以后使用的命令存储在变量中(不是命令的输出,而是命令本身) 我有一个简单的脚本,如下所示: 但是,当我尝试更复杂的操作时,它会失败。例如,如果我做 输出为: 知道如何将这样的命令(带有管道/多个命令)存储在变量中以备后用吗? 问题答案: 使用eval:

  • 问题内容: 我想要的是将git命令的输出(例如git status)存储在shell脚本的变量内。当我说输出时,我说的是在终端上执行命令时返回的文本,例如:在回购之外执行git status时: 我尝试了这个: 但是’var’没有存储任何东西。 问题答案: 您可以使用: 即将stderr重定向到stdout,然后捕获输出。 否则,当会写上错误消息并且您的命令:仅正在捕获时。

  • 问题内容: 如何在以后要在另一个控制器中访问的控制器中存储变量?例如: 我该怎么做? 问题答案: 在根范围内设置的变量可通过原型继承供控制器范围使用。 这是@Nitish演示的修改后的版本,它更加清楚地显示了这种关系:http : //jsfiddle.net/TmPk5/6/ 注意,在模块初始化时设置了rootScope的变量,然后每个继承的作用域都有自己的副本,可以独立设置(该函数)。另外,r

  • 问题内容: 我在JavaScript中有以下代码: PHP代码:- 注意:我不希望在表单提交中使用它。我在JavaScript中有一些逻辑,我想在同一PHP页面中使用它…请让我知道我该怎么做。 问题答案: 您必须记住,如果JS和PHP位于同一个文档中,则将首先在服务器上执行PHP,然后在浏览器上执行JS,并且两者将永远不会交互(除非您在哪里用PHP输出JS,这实际上不是两个引擎之间的交互)。 考虑