.eq引起警告。我怎么摆脱它?

时间:2013-03-02 00:09:34

标签: scala jdo scala-compiler

我在Scala中使用JDO和DataNucleus类型安全查询语言。因此,我的代码如下所示:

val id: Long = // something
val cand: QDbObject = QDbObject.candidate()
pm.query[DbObject].filter(cand.id.eq(id))...

简而言之,这会针对DbObject字段等于id的所有id运行查询。不幸的是,我收到以下警告:

NumericExpression[Long] and Long are unrelated: they will most likely 
never compare equal

显然,Scala编译器认为NumericExpression[Long]正在使用eq()的内置定义,类似于==,但由于这来自Java,{{1}方法与Scala的eq()方法完全无关。

有没有办法摆脱警告?显然,这种情况会发生很多,我担心这些非警告会隐藏真正的警告。

更新(2013-06-29)

这已在Scala 2.10.2中修复。警告消失了。

1 个答案:

答案 0 :(得分:1)

我更担心是否实际调用eq方法而不是Scala的eq!但它是。不过,我认为你不能摆脱它。如果您使用的是Scala 2.10,则可以使用调用eq的其他方法创建隐式值类 - 它实际上是相同的,但警告将仅限于一个文件。