我们如何在Lambda表达式中做到这一点?

萨汉

首先我们必须在其他文件或同一文件中声明接口以用于lambda表达式。但是是否可以在方法声明中做到这一点呢?

 public class LambdaAppJava8 {
 public int fonk(
     int a, 
     int b, 
     interface MyInterface{
          public int call(int a, int b);
     } anonim
 ) {
    return anonim.call(a, b);
 }

 public static void main(String[] args) {
    LambdaAppJava8 app = new LambdaAppJava8();
    System.out.println(app.fonk(1, 3, (c, d) -> c + d));
 }
}
霍尔格

没有方法可以在方法声明内声明接口,但可以将其设置为足够接近的嵌套类型。

public class LambdaAppJava8 {
    private interface MyInterface {
        public int call(int a, int b);
    }
    public int fonk(int a, int b, MyInterface anonim) {
        return anonim.call(a, b);
    }
    public static void main(String[] args) {
        LambdaAppJava8 app = new LambdaAppJava8();
        System.out.println(app.fonk(1, 3, (c, d) -> c + d));
    }
}

匿名的含义似乎也有误解interface您可以在方法内部声明匿名类,但这些类不会“即时”声明;它们仍然是在编译时创建的具有自己的类文件的类型,该类文件不小于顶级类型,实际上,情况恰恰相反。此类类型比顶级类型具有更大的类文件,因为它们包含有关定义它们的周围上下文的元信息。

如果有一种方法可以interface在方法的参数列表中声明内部,则不会改变它不会比在其他任何地方声明它更有效。但这需要特殊的作用域规则例外,因为在常规作用域规则下,您无法调用期望方法局部类型的参数的方法,因为调用者不会知道该类型。


但是请注意,上面的示例实际上是您想要实现的。您也可以更改MyInterfaceto的声明,public其他类可以使用lambda表达式调用该方法,就像用例一样,app.fonk(1, 3, (c, d) -> c + d) 而无需导入 MyInterface这似乎是您的问题所在,调用者不必处理interface为该fonk参数专门定义的问题,而编译器则可以。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们如何在Lambda表达式中做到这一点?

来自分类Dev

我们如何在Google工作表中做到这一点?根据条件相乘

来自分类Dev

您将如何使用正则表达式javascript做到这一点?

来自分类Dev

如何在MYSQL中做到这一点?

来自分类Dev

如何在硒中做到这一点

来自分类Dev

如何在MYSQL中做到这一点?

来自分类Dev

如何在OCL中做到这一点?

来自分类Dev

如何在Notepad ++中做到这一点?

来自分类Dev

如何在 JavaScript 中做到这一点

来自分类Dev

如何在 jQuery 中做到这一点?

来自分类Dev

我们能做到这一点在Perl?

来自分类Dev

我该如何在Jade(pug)中做到这一点?

来自分类Dev

我是mysql的新手。如何在mysql中做到这一点?

来自分类Dev

我该如何在访问表格中做到这一点

来自分类Dev

我该如何在C#中做到这一点?

来自分类Dev

我该如何在Jade(pug)中做到这一点?

来自分类Dev

我如何在 rxjava 2 中做到这一点?

来自分类Dev

通过正则表达式是否有可能做到这一点?

来自分类Dev

何使用正则表达式来做到这一点?

来自分类Dev

我想从字符串中获取数字数据。如何在python中做到这一点?

来自分类Dev

我想预测新事件的更新次数?如何在python中做到这一点?

来自分类Dev

我如何/可以在T-SQL中做到这一点?

来自分类Dev

我想逐行显示 JTextArea 中的元素。如何做到这一点?

来自分类Dev

您如何在MS Excel中做到这一点?

来自分类Dev

两个共享代码的分支-如何在git中做到这一点?

来自分类Dev

如何在C#中做到这一点?

来自分类Dev

扩展树枝模板-如何在PHP中做到这一点?

来自分类Dev

作为方法参数的赋值,如何在VB.NET中做到这一点?

来自分类Dev

您如何在MS Excel中做到这一点?

Related 相关文章

  1. 1

    我们如何在Lambda表达式中做到这一点?

  2. 2

    我们如何在Google工作表中做到这一点?根据条件相乘

  3. 3

    您将如何使用正则表达式javascript做到这一点?

  4. 4

    如何在MYSQL中做到这一点?

  5. 5

    如何在硒中做到这一点

  6. 6

    如何在MYSQL中做到这一点?

  7. 7

    如何在OCL中做到这一点?

  8. 8

    如何在Notepad ++中做到这一点?

  9. 9

    如何在 JavaScript 中做到这一点

  10. 10

    如何在 jQuery 中做到这一点?

  11. 11

    我们能做到这一点在Perl?

  12. 12

    我该如何在Jade(pug)中做到这一点?

  13. 13

    我是mysql的新手。如何在mysql中做到这一点?

  14. 14

    我该如何在访问表格中做到这一点

  15. 15

    我该如何在C#中做到这一点?

  16. 16

    我该如何在Jade(pug)中做到这一点?

  17. 17

    我如何在 rxjava 2 中做到这一点?

  18. 18

    通过正则表达式是否有可能做到这一点?

  19. 19

    何使用正则表达式来做到这一点?

  20. 20

    我想从字符串中获取数字数据。如何在python中做到这一点?

  21. 21

    我想预测新事件的更新次数?如何在python中做到这一点?

  22. 22

    我如何/可以在T-SQL中做到这一点?

  23. 23

    我想逐行显示 JTextArea 中的元素。如何做到这一点?

  24. 24

    您如何在MS Excel中做到这一点?

  25. 25

    两个共享代码的分支-如何在git中做到这一点?

  26. 26

    如何在C#中做到这一点?

  27. 27

    扩展树枝模板-如何在PHP中做到这一点?

  28. 28

    作为方法参数的赋值,如何在VB.NET中做到这一点?

  29. 29

    您如何在MS Excel中做到这一点?

热门标签

归档