如何使用来自任何其他任意对象的数据填充简单的Java对象?
例如,我最终得到一个Document对象,其子节点我可以遍历,我想在另一个对象中使用节点的值设置同名属性.
我主要在动态语言中工作,我认为我很想知道这在perl或javascript中是如何工作的,并且不能让我的脑袋远离动态排水沟足够长时间才能清楚地看到这一点.
我知道我可以做类似的事情(伪代码)
while (key = nextKey) {
if (key.name == "fooBar") {
object.setFooBar(key.value);
} else if (key.name == "bazQux") {
object.setBazQux(key.value);
}
...etc...
}
Run Code Online (Sandbox Code Playgroud)
但是这感觉并不好,当属性或复杂性增加时感觉很糟糕.
在动态语言中,我会做类似的事情:
while (key = nextKey) {
object.setField(key.name, key.value);
// or even
object.[key.name] = key.value;
}
Run Code Online (Sandbox Code Playgroud)
where setField可以是带代码引用的调度表.我知道默认情况下我没有奢侈的每个对象都是哈希,但我正在寻找一般建议.你会怎么做?
一个开关/盒子会好一点,但java抱怨它不喜欢这样的语句中的字符串.枚举会成为解决方案吗?</盲目刺伤答案>
我已经研究过使用反射来实现某种自动调度表,但这让我感到沮丧,并且必须有更好的方法.
感谢您的任何见解.
绑定到复选框输入的单击事件时,复选框已经在我的事件处理程序运行时切换,更奇怪的是,如果我指定了event.preventDefault(),则在我的事件处理程序运行后,切换会反转.
<input id="foo" type="checkbox"/>
function clicked(evt) {
alert(document.getElementById('foo').checked);
evt.preventDefault();
}
document.getElementById('foo').addEventListener('click',clicked);
Run Code Online (Sandbox Code Playgroud)
[在chrome和firefox中测试]
警报将响应"true"(或复选框预先单击的相反状态).关闭警报后,复选框会切换回来.
所以,我猜问题是,
什么是实际的默认事件被阻止?假设我的事件处理程序应该在状态更改之前运行,我错了吗?有没有办法合法拦截复选框点击?
为什么世界上的preventDefault导致重新切换复选框?