java - 测试 BiConsumer 时出现编译错误

标签 java lambda java-8

我写了下面的方法,它接受 BiConsumer<Object, Object> ,当我传递方法 testBiConsumer(String a, String b) 的方法引用时我收到一个编译错误,指出:

Multiple markers at this line
    - The method biConsumerTest(String, String, BiConsumer<Object,Object>) in the type Test is not applicable for the arguments (String, String, 
     Test::testBiConsumer)
    - The type Test does not define testBiConsumer(Object, Object) that is applicable here

如果我将 BiConsumer 从 BiConsumer<Object, Object> 更改为至BiConsumer<String , String >它工作得很好。

如何使下面的代码工作?我要 public static void biConsumerTest(String a, String b, BiConsumer<String, String> biConsumer)是通用的。

public class Test {
        public static void main(String[] args){
            Test.biConsumerTest("A", "B", Test::testBiConsumer);
        }

        public static void biConsumerTest(String a, String b, BiConsumer<Object, Object> biConsumer){
            biConsumer.accept(a, b);
        }

        public static void testBiConsumer(String a, String b) {
            System.out.println(a);
            System.out.println(b);
        }
    }

最佳答案

代码看起来有点有趣,并且不清楚您实际上要实现什么,但要使其通用:

public class Test {
    public static void main(String[] args) {
        Test.biConsumerTest("A", "B", Test::testBiConsumer);
    }

    public static <T> void biConsumerTest(T a, T b, BiConsumer<T, T> biConsumer) {
        biConsumer.accept(a, b);
    }

    public static <S> void testBiConsumer(S a, S b) {
        System.out.println(a);
        System.out.println(b);
    }
}

关于java - 测试 BiConsumer 时出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488534/

相关文章:

c# - 将属性传递给 C#、EF 中的函数

c++ - 函数和非捕获 lambda 之间的区别

java - 如何使用 Java 8 Lambda 表达式将一种类型的列表转换为其子类型的列表

Java 8 - 如何将多个字段汇总到一个 dto 中?

java - 如何强制转换 lambda 方法参数?

java - EAR 中的差异 部署在 Websphere 应用程序服务器中。 ( war 到耳边)

java - 有没有一种方法可以有效地在 Java 中存储一系列枚举值?

java - 从 Smartsheet 单元格调用 Java 代码并更新其他列单元格

java - 使用 mysql 将 ID_Column 值加 1

Java 8 - 使用 JsonObject (javax.json) - 如何确定一个节点是否有子节点?