java 只读数组_在Java 8中创建方法引用数组的速记方法?
我正在使用Wicket 6 / Java 8,并添加了一些簡單的類,這些類利用了Java 8中的lambda功能(我知道Wicket的更高版本具有l(wèi)ambda支持,但我們現(xiàn)在不能升級).我正在創(chuàng)建一個(gè)有點(diǎn)類似于PropertyModel的LambdaModel,我希望它將不再需要對表示該屬性的嵌套路徑的字符串進(jìn)行硬編碼.
首先,我要制作一個(gè)簡單的只讀版本. Ive制作了Function接口的可序列化版本,以創(chuàng)建以下內(nèi)容:
public class LambdaModelUtils {
public static IModel ofNested( IModel target, SerializableFunction,?>... path ) {
// creates a model that works through each function in the path in turn
}
}
我的實(shí)現(xiàn)效果很好,但是唯一的問題是,以“有效”的方式調(diào)用此方法會導(dǎo)致編譯錯(cuò)誤:
IModel parentModel = ...
IModel model = LambdaModelUtils.ofNested( parentModel,
Parent::getChild, Child::getName ); // Compile time error
我可以找到調(diào)用該方法的唯一方法是通過以下方法:
SerializableFunction path0 = Parent::getChild;
SerializableFunction path1 = Child::getName;
IModel model = LambdaModelUtils.ofNested( parentModel,
path0, path1 ); // works
這有點(diǎn)笨拙-有更好的方法嗎?
香港專業(yè)教育學(xué)院看了here,但這似乎也不起作用:
List path = Arrays.asList( Parent::getChild, Child::getName );
謝謝
總結(jié)
以上是生活随笔為你收集整理的java 只读数组_在Java 8中创建方法引用数组的速记方法?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cytoscape要求的JAVA版本_微
- 下一篇: java锁一次交互二次握手_Java后台