如何创建将打印方法引用作为参数的函数?

时间:2018-06-19 12:23:31

标签: java java-8

我想创建一个将打印方法引用作为参数的方法。有什么方法可以创建如下所示的方法?

public static void main(String [] args) { 
    runFunction(System.out::print);   
}

public static void runFunction(MethodRef methodRef){
    methodRef("test");
}

编辑:

我已经创建了类似的功能界面;

public interface Generatable<T> {
    void generate(T t);
}

然后我将runFunction更新为;

public static void acceptFunction(Generatable generatable){
    generatable.generate("test");
}

此方法效果很好,但我仍然不知道它是如何工作的。我的意思是当我调用generate(“ test”)时,它如何调用打印方法。

2 个答案:

答案 0 :(得分:4)

是的,就像Prashant说的那样。 但是,如果您使用功能性接口,则最好添加这样的通用类型:

public static void runFunction(Consumer<String> consumer){
    consumer.accept("test");
}

有关更多功能界面,您可以查看https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html

答案 1 :(得分:1)

是的,您可以将Consumer用作:

public static void runFunction(Consumer consumer){
    consumer.accept("test");
}

旁注:Java 8 +仅支持功能编程。因此,如果您使用的Java版本低于8,则将无法正常工作,并且没有简单的方法可以满足您的要求。