|
1
5
它们不完全一样。两者都创建了未命名的类,但它们的相似性到此为止。 在C++中,创建一个闭包,可以通过引用来捕获本地变量。在Java中,您只需获得当前局部变量值的快照(这些变量必须是“final”)。
匿名内部类的目的是扩展另一个类或实现另一个临时接口。因此,匿名内部类可以在某种程度上模拟lambda表达式的工作,例如通过实现
|
|
2
5
Java匿名内部类可以引用
一个C++ lambda可以参考 数据(包括可变的)在封闭函数中,如果它嵌套在成员函数中,那么它可以对封闭类的数据执行相同的操作。对封闭范围的精确依赖程度由程序员声明,因此它是显式的而不是隐式的。
与C#lambdas相比,C#lambdas没有限制,所有依赖项都是隐式的。这使得它们成为这些特性中最不冗长的(也得益于它们具有最好的类型推断)。但在缺点方面,它们使所有关于线程的简单规则无效,即局部变量不一定是“在线程堆栈上”,因此在访问之前不需要锁定。 |
|
|
3
2
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |