- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于泛型,有人告诉我强制转换是不好的,通常有一些方法可以完全消除强制转换,以便编译器在检查我的程序时发挥最佳作用。添加 ChangeListener这里是ReadOnlyDoubleProperty似乎打败了这个理想。这是 API 中的缺陷,还是规则的异常(exception),或者实际上是否有某种方法可以使此代码看起来不错?
nodeA.heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue< ? extends Number > observable,
Number oldValue,
Number newValue ) {
final double ov = oldValue.doubleValue();
final double nv = newValue.doubleValue();
@SuppressWarnings("unchecked")
final ObservableValue<Double> ob = ( ObservableValue< Double > ) observable;
// do stuff
}
});
首先,我可以在 ChangeListener 上使用的最具体的类型参数是 Number .我应该可以使用 Double!这是一个DoubleExpression !由于这个问题,我必须解压缩 changed
方法的参数。请帮助减少此处的行数。 Lambda 可以减少行数,但我要特别询问泛型。
最佳答案
tl;dr: 使用 asObject .
首先请注意,在您发布的示例中,根本没有理由引用 observable
参数,因为它必须是与 nodeA.heightProperty()
相同的引用.所以你可以简单地用
nodeA.heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue< ? extends Number > observable,
Number oldValue,
Number newValue ) {
final double ov = oldValue.doubleValue();
final double nv = newValue.doubleValue();
// do stuff with nodeA.heightProperty() ...
}
});
这一点也不奇怪:事实上,我认为我从来没有需要引用传递给这个方法的可观察对象,因为我总是使用相同的模式。
至于ReadOnlyDoubleProperty
工具 ObservableValue<Number>
, 因为不是 ObservableValue<Double>
,这要么是便利功能,要么是设计缺陷,具体取决于您的观点。 (参见讨论 here 和其他地方...)。解决方法是调用 asObject()
在 ReadOnlyDoubleProperty
上,它返回一个 ReadOnlyObjectProperty<Double>
双向绑定(bind)到 ReadOnlyDoubleProperty
,并实现 ObservableValue<Double>
:
nodeA.heightProperty().asObject().addListener(new ChangeListener<Double>() {
@Override
public void changed(ObservableValue< ? extends Double > observable,
Double oldValue,
Double newValue ) {
final double ov = oldValue.doubleValue();
final double nv = newValue.doubleValue();
// do stuff
}
});
(拆箱也会使上面的 ov
和 nv
变得多余。)
当然,您可以使用 lambda 使它变得更好:
nodeA.heightProperty().asObject().addListener((obs, oldValue, newValue) -> {
// obs is now an ObservableValue<Double>, if you need it
// oldValue is a Double, which can be treated as a double via unboxing
// similarly newValue is a Double
// do stuff..
});
关于java - JavaFX 中的 ChangeListener : how can I make these generics parameters less ugly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34733972/
经过大量的修改和搜索,我能够得到这个代码。然而,它感觉很脏,我不得不经历很多麻烦,因为 Node 不喜欢将数据传递给全局变量,有没有更好的方法来编写这个?我对 Node 很陌生,所以我觉得我缺少一些可
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 8年前关闭。 Improve t
当我添加和删除一个类时,我试图让“转换”正常工作,但我没有成功。 这是我所做的,我认为这将帮助您更好地理解我的问题: http://jsfiddle.net/88mzjnec/9/ CSS 代码: .
在 article ,这解释了我发现的 rails 模板引擎在性能方面的差异 slim pretty和 slim ugly条款。你能解释一下这之间的区别吗? 最佳答案 似乎 Slim 使用 Templ
场景:我有一个功能需要以某种方式进行调整(例如;让它在不同地方的工作方式略有不同)。出于某种原因,我最终不得不在代码中添加一些丑陋的东西,无论是在函数中还是在现有的调用站点。假设两种情况下“丑陋”的总
def positive_int(value): try: ivalue = int(value) except: raise argparse.Arg
我试图在 Chrome 中使用自定义 ::selection 效果,但在突出显示的文本上出现这种糟糕的蓝色: 这是我的 CSS: ::selection { color:#ffffff;
我正在尝试找到“丑陋”的数字,这是一系列只有质因数是 [2,3,5] 的数字。 我找到了动态规划解决方案,想了解它是如何工作的,以及逻辑背后的数学直觉是什么。 该算法是为 2、3 和 5 的倍数保留三
首先,我不确定如何用一行来准确描述我正在做的事情...因此标题有点模糊。 我能给出的问题的最简短描述是“我有一个函数,它应该能够将许多可能类型的类中的任何一种作为参数,并且这些类都是从基类派生的” .
我正在使用 CardView 作为 RecyclerView 的自定义项。它们在 Android 5+ 上看起来不错,但在较旧的 Android 版本上却大不相同。 在 Android 5 + 上 A
我必须使一些文本可编辑以形成电子邮件。为了指示可以更改文本的位置,我想在可编辑的段落周围加上边框。可悲的是,它看起来很丑陋: outline: 1px solid #c9c9c9; 如果可编辑范围包含
我想在鼠标悬停时更改 HTML 元素的大小。它一般有效。但是,至少在 Firefox 中,当鼠标正好位于 DIV 的底部边缘时,它会产生丑陋的闪烁效果:即使鼠标根本没有移动,浏览器也会继续调整大小。我
我怎样才能把圆弄平?在某些点上有颠簸,而且非常..粗糙。我需要在里面画多个圆圈,当我尝试的时候它看起来真的很糟糕。这是 PIL 的问题还是我想念的东西? 我是这样画的: import Image, I
我是 mod_rewrite 的新手,需要为我的客户做点什么。 假设我有 www.mydomain.com/products.php?prod_id=32。 这个产品有一个部分(衣服)和一个名字(衬衫
我知道 iScroll,我已经使用 jQuery Mobile 很长时间了,我知道他们都解决了这个问题,但我想自己做,而不是为此包含一个大型框架。我的问题是 jQuery Mobile 是如何固定这个
使用 Raphael.js 绘制欧洲的一些小 map 。 它在 IE7+、Safari、Firefox 中运行良好。但是,在 Chrome 中,当鼠标悬停在法国上空时,我的 map 上会出现一个白框。
我正在尝试使用 case of 在标准 ML 中编写一个函数,但我最终得到的代码尖叫着一堆 if/else。这只是使用 case of 的一个糟糕的候选者,还是有更好的设置方法以便我不经常将 bool
我开发的应用程序在一定程度上计算税单金额。税单由许多可计算的字段(警长费用、文员费用、罚款、利息、统一税率等)组成,其计算方式通常是静态的,但可能会因立法或特殊法案而改变特性。随着时间的推移,整个类别
我将 UITableView 放入 UIPopover 中,当 TableView 的滚动条可见时(并且在一段时间后,即使没有滚动条),得到这些白色边缘而不是真正的圆角: 这是预期的行为吗?我知道 U
在此网站上:编辑 我希望在您滚动过去后将 $("#menu") 附加到页面顶部,有点像这里的标题:http://starwars.ea.com/starwars/battlefront 问题是当我这样
我是一名优秀的程序员,十分优秀!