- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Wicket 6/Java 8 并正在添加一些简单的类,这些类利用 Java 8 中的 lambda 功能(我知道 Wicket 的更高版本支持 lambda,但我们现在无法升级)。我正在创建一个有点像 PropertyModel 的 LambdaModel,我希望它可以消除对表示属性的嵌套路径的字符串进行硬编码的需要。
首先,我正在制作一个简单的只读版本。我制作了 Function 接口(interface)的可序列化版本以创建以下内容:
public class LambdaModelUtils {
public static <X,R> IModel<R> ofNested( IModel<X> target, SerializableFunction<?,?>... path ) {
// creates a model that works through each function in the path in turn
}
}
我的实现运行良好,但唯一的问题是以“高效”方式调用此方法会导致编译错误:
IModel<Parent> parentModel = ...
IModel<String> model = LambdaModelUtils.ofNested( parentModel,
Parent::getChild, Child::getName ); // Compile time error
我能找到调用该方法的唯一方法是:
SerializableFunction<Parent,Child> path0 = Parent::getChild;
SerializableFunction<Child,String> path1 = Child::getName;
IModel<String> model = LambdaModelUtils.ofNested( parentModel,
path0, path1 ); // works
这有点笨拙 - 有更好的方法吗?
我看了here但这似乎也不起作用:
List<SerializableFunction> path = Arrays.asList( Parent::getChild, Child::getName );
谢谢
最佳答案
如果您使用这些函数来获取嵌套属性,但并不真正使用中间结果,我建议您只使用 lambda 表达式:
public static <X,R> IModel<R> ofNested(IModel<X> target, SerializableFunction<X, R> path)
IModel<Parent> parentModel = ...
IModel<String> model = LambdaModelUtils.ofNested(parentModel, p -> p.getChild().getName());
这是有效的,因为 lambda 的目标类型现在是已知的,而不是通用的 SerializedFunction<?, ?>
, 你得到 SerialiedFunction<X, R>
其中 X = Parent
和 R = String
.
关于java - 在 Java 8 中创建方法引用数组的简写方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50407462/
考虑以下示例: if (cache) { x = cache; } else { x = cache = someMethod(); } 无论如何要使它比 cache 更短? x =
我有一个字符串,我想将它附加到其他字符串。比方说: $my_string = 'Hello'; $my_string .= ' there'; 这将返回“你好”。 我想像这样设置条件: $my_str
有没有办法执行以下操作,但简而言之 if/then 语法: if($method->isAbstract()) { $details['abstract'] = true; } 如果我这样做:
我很好奇,有没有更简单的说法 if(myVar == myVal || myVar == myOtherVal){ /*...*/ } 如: if(myVar == myVal || myOtherV
我正在寻找一种方法来最小化数组的创建,其中所有索引都具有相同的值。这可能不可能,但我会发现它非常方便。 考虑: var layer = []; layer['game'] = new Kinetic.
我想知道是否有办法将简写 if/else 与简写 += 合并 类似这样的事情: var value; $.each(data.events, function(index, element) {
我需要用 JQuery 做一个速记 IF-ELSE。我的代码: $('#somediv').val() != 0 ? $('#somediv').toggleClass('class1') :
我觉得这一定是重复的,但我找不到任何东西,可能是由于措辞不同,或者只是因为确实没有更好的东西。 我正在生成大量的 JS 代码,其中“OR”对象属性与变量,而标识符不一定匹配。看起来像这样(值为 boo
这个问题在这里已经有了答案: Shorthand if/else statement Javascript (7 个答案) 关闭 9 年前。 下面的简写等价物是什么? if (windowwidth
以下的 JS 简写是什么: if (typeof bfMax !== 'undefined') { options.max = bfMax; } 最佳答案 有条件地赋值
假设我有父类 - “Parent”,我想从中创建三个对象 - o1、o2、o3。 因此,如果有一个简略的方法或一种漂亮的方法来执行以下操作: o1=Parent() o2=Parent() o3=Pa
这个问题已经有答案了: Check variable equality against a list of values (16 个回答) 已关闭 5 年前。 我觉得我经常遇到这种情况,直觉上应该有一
我是 Swift 的新手,我想知道是否有一种“速记”形式,可以在不执行 if nil 检查的情况下将可选值分配给非可选值。 例如,如果我有一个可选的闭包: var onTap: (() -> Void
这个问题在这里已经有了答案: Why does the expression 0 < 0 == 0 return False in Python? (9 个回答) 关闭 4 年前。 if x ==
这个问题在这里已经有了答案: CSS select multiple descendants of another element (3 个答案) 关闭 5 年前。
假设我正在使用一些 python 包中的类,如下所示 class foo(object): def __init__(self): self.a = None
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
top right bottom left 或 width 有任何简写和高度 ? 我有很多这样的CSS #topDiv { position:absolute; top:0px;
这个问题在这里已经有了答案: 关闭9年前。 Possible Duplicate: Ternary conditional operator in Python 我想在 python 中做以下事情:
if-else 的 JavaScript 简写可以从函数中返回吗?如果是这样,这将如何运作。 例如。我有这个: if(boolean){ return; } 我想这样写: (value)? retu
我是一名优秀的程序员,十分优秀!