Java闭包的当前规范是什么?
在提议的Java闭包规范中,我们能够 创建一个数组或闭包集合?
如果是这样,这种语法是否可行?{int x, int y => boolean b}[] comparisonSwitch = { {int i, int j => return i>j}, {int i, int j => return j<i}, {int i, int j => return j==i} } boolean compare(int acase, int a, int b){ return comparisonSwitch[acase].invoke(a,b); }
普通方法会被视为非匿名闭包吗?
那么以下语法是否可行?public class Asdf { public boolean gt(int x, int y){ return x>y; } public boolean lt(int x, int y){ return x<y; } public boolean eq(int x, int y){ return x==y; } {int x, int y => boolean b} GT = gt; {int x, int y => boolean b}[] comparisonSwitch = { gt, lt, eq } }
即封闭和方法是否可以互换?
是否允许以下语法?// declare a method that has a closure type as an argument void closurator( {String s => int a} findlen ){ // do whatever } String s = "hello"; void useClosurator(){ // invoke the method by supplying a non-anonymous method // of an object closurator(s.indexOf(String ss)); }
我们如何能够在接口中指定闭包类型?
我们能否做到以下几点,有效地声明方法的最终/常量引用。interface Closuration { public class Asdf { static public boolean gt(int x, int y){ return x>y; } static public boolean lt(int x, int y){ return x<y; } static public boolean eq(int x, int y){ return x==y; } } {int x, int y => boolean b}[] comparisonSwitch = { Asdf.gt, Asdf.lt, Asdf.eq }; }
由于闭包会访问代码空间,就像反射一样,使用闭包会降低程序的性能吗?如果没有,这意味着,通过借用“封闭技术”的进步来加速反思吗?
插入新问题: 实际上,闭包代码是代码空间的一部分还是变量堆的一部分,因为我预测闭包代码很容易被垃圾收集擦掉,对吧?
我可以请求您关注问题的要点,而不是示例代码中的任何语法错误/拼写错误/缺失关键字。任何错别字/错误,请为我纠正。谢谢。