(这很难搜索,因为结果全都与“方法参考”有关)
我想获取一个Methodlambda表达式的实例,以与基于传统反射的API一起使用。应该包括clousure,因此调用thatMethod.invoke(null, ...)
应与调用lambda具有相同的效果。
我已经看过MethodHandles.Lookup
,但是它似乎只与反向转换有关。但是我想该bind方法可能有助于包括clousure?
编辑:
假设我有lambda扩展功能:
Function<String, String> sayHello = name -> "Hello, " + name;
我有一个遗留框架(SpEL),其API
registerFunction(String name, Method method)
这将Method不带任何this参数调用给定值(即,方法假定为静态)。因此,我需要获得一个Method包含lambda逻辑+ clousure数据的特殊实例。
如果您找不到优雅的方法,这就是丑陋的方法(Ideone)。涉及反射时通常会发出警告:在将来的发行版中可能会中断
public static void main(String[] args) throws Exception {
Function<String, String> sayHello = name -> "Hello, " + name;
Method m = getMethodFromLambda(sayHello);
registerFunction("World", m);
}
static void registerFunction(String name, Method method) throws Exception {
String result = (String) method.invoke(null, name);
System.out.println("result = " + result);
}
private static Method getMethodFromLambda(Function<String, String> lambda) throws Exception {
Constructor<?> c = Method.class.getDeclaredConstructors()[0];
c.setAccessible(true);
Method m = (Method) c.newInstance(null, null, null, null, null, 0, 0, null, null, null, null);
m.setAccessible(true); //sets override field to true
//m.methodAccessor = new LambdaAccessor(...)
Field ma = Method.class.getDeclaredField("methodAccessor");
ma.setAccessible(true);
ma.set(m, new LambdaAccessor(array -> lambda.apply((String) array[0])));
return m;
}
static class LambdaAccessor implements MethodAccessor {
private final Function<Object[], Object> lambda;
public LambdaAccessor(Function<Object[], Object> lambda) {
this.lambda = lambda;
}
@Override public Object invoke(Object o, Object[] os) {
return lambda.apply(os);
}
}
(这很难搜索,因为结果都是关于“方法参考”) 我想为lambda表达式获取一个实例,用于传统的基于反射的API。应该包括clousure,因此调用应该与调用lambda具有相同的效果。 我已经研究了MethodHandles。查找,但它似乎只与反向转换相关。但是我想bind方法可能有助于包含clousure? 编辑: 假设我是lambda Expersion: 我有一个遗留框架(SpEL),它有一
本文向大家介绍groovy 将方法转换为闭包,包括了groovy 将方法转换为闭包的使用技巧和注意事项,需要的朋友参考一下 示例 可以使用&运算符将方法转换为闭包。
我从. csv文件读取数据到熊猫数据框如下。对于其中一个列,即,我想将列类型指定为。问题是系列缺少/空值。 当我在读取.csv时尝试将列强制转换为整数时,我得到: 或者,在阅读以下内容后,我尝试转换列类型,但这次我得到: 我如何处理这个问题?
我有一个docx4j生成的文件,其中包含几个表格、标题,最后还有一个excel生成的曲线图。 我尝试了许多方法,以将此文件转换为PDF,但没有得到任何成功的结果。 带有xsl fo的Docx4j不起作用,docx文件中包含的大部分内容尚未实现,并以红色文本显示为“未实现” 我在Apache POI中使用的代码如下: 我不知道该怎么做才能得到PDF中的图表,有人能告诉我如何继续吗? 提前感谢。
问题内容: 我从HTML页面中将一个字符串输入到Java HTTPServlet中。根据我的要求,我得到了显示汉字的ASCII码: “&#21487;&#20197;&#21578;&#35785;&#25105;” (无空格) 如何将该字符串转换为Unicode? HTML代码: Java代码: 如果我打印问题[0],则会得到以下值:“&#21487;&#20197;&#21578;&#3578
我想将以下内容从perl5转换为perl6, 它创建一个包含 16 个字符的字符串,其中每个字符都有一个从 0 到 255 的随机选取值。Perl5 不会为这些字符分配任何语义,因此它们可以是字节、Unicode 代码点或其他字符。 我想我能过得去 但是我被困在使用包装上,这是我的尝试, 并且结果可以是错误, 或类似的东西, 我的思路是,打包整数列表将返回一个Buf,然后解码,这将产生所需的Str