2

ScalaでDataNucleusタイプセーフクエリ言語でJDOを使用しています。したがって、次のようなコードがあります。

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

簡単に言うと、これは、フィールドが。に等しいすべてのDbObjectsに対してクエリを実行します。残念ながら、次の警告が表示されます。idid

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

明らかに、Scalaコンパイラーは、に似たNumericExpression[Long]の組み込み定義を使用していると考えていますが、これはJavaからのものであるため、このメソッドはScalaのメソッドとはまったく関係ありません。eq()==eq()eq()

警告を取り除く方法はありますか?明らかに、これは頻繁に発生する予定であり、これらの非警告が実際の警告を隠すのではないかと心配しています。

更新(2013-06-29)

これはScala2.10.2で修正されました。警告はなくなりました。

4

1 に答える 1

1

eq私は、Scalaの代わりにメソッドが実際に呼び出されるかどうかについてもっと心配していましたeq!しかし、そうです。しかし、私はあなたがそれを取り除くことができるとは思いません。Scala 2.10を使用している場合は、別のメソッド呼び出しを使用して暗黙の値クラスを作成できます。eqこれは事実上同じですが、警告は1つのファイルに制限されます。

于 2013-03-02T00:22:09.817 に答える