代码之家  ›  专栏  ›  技术社区  ›  hellzone

如何创建以print方法引用为参数的函数?

  •  1
  • hellzone  · 技术社区  · 6 年前

    我想创建一个以print方法引用为参数的方法。有什么方法可以创建如下方法吗?

    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”)时它如何调用print方法。

    2 回复  |  直到 6 年前
        1
  •  4
  •   Christopher Jung    6 年前

    是的,就像普拉山特说的。 但是,如果使用功能接口,最好添加这样的泛型类型:

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

    对于更多的功能接口,您可以查看 https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html

        2
  •  1
  •   Prashant    6 年前

    是的,你可以用 Consumer AS:

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

    旁注:仅支持函数编程 Java 8 + . 所以如果你用的是 Java 低于8,这是行不通的,没有简单的方法来满足你的要求。