Java 无法使用具有泛型扩展号的接口 publicstaticvoidmain(字符串[]args){ 试验((a,b)->a+b,2,3); } 专用静态空隙试验(Op a,int num1,int num2){ 系统输出println(a.op(num1,num2)); } 专用静态接口{ 公共财政支出(T num1,T num2); }

Java 无法使用具有泛型扩展号的接口 publicstaticvoidmain(字符串[]args){ 试验((a,b)->a+b,2,3); } 专用静态空隙试验(Op a,int num1,int num2){ 系统输出println(a.op(num1,num2)); } 专用静态接口{ 公共财政支出(T num1,T num2); },java,generics,Java,Generics,在第二行中,对于二进制运算符+,我有错误的操作数类型。我应该怎么做才能使它工作?通过在test中的Op中添加类型 public static void main (String[] args) { test((a,b)->a+b, 2, 3); } private static void test (Op a, int num1, int num2){ System.out.println(a.op(num1, num2)); } private static inte

在第二行中,对于二进制运算符+,我有错误的操作数类型。我应该怎么做才能使它工作?

通过在
test
中的
Op
中添加类型

public static void main (String[] args) {
    test((a,b)->a+b, 2, 3);
}

private static void test (Op a, int num1, int num2){
    System.out.println(a.op(num1, num2));
}

private static interface Op <T extends Number>{
    public T op(T num1, T num2);
}
专用静态无效测试(Op a,int num1,int num2){
系统输出println(a.op(num1,num2));
}
然后您的代码将输出
5
(正如我认为您所期望的那样)。

可能重复的
private static void test(Op<Integer> a, int num1, int num2) {
    System.out.println(a.op(num1, num2));
}