我想创建一个将打印方法引用作为参数的方法。有什么方法可以创建如下所示的方法?
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”)时,它如何调用打印方法。
答案 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,则将无法正常工作,并且没有简单的方法可以满足您的要求。