Tag: scala 2.8

将Java数组传递给Scala

虽然我已经使用Scala一段时间并且之前已经将它与Java混合,但我遇到了一个问题。 如何将Java数组传递给Scala? 我知道反过来相当简单。 Java to Scala并非如此。 我应该在Scala中声明我的方法吗? 这是我想要实现的一个小例子: 斯卡拉: def sumArray(ar: Array[Int]) = … Java的: RandomScalaClassName.sumArray(new int[]{1,2,3}); 这可能吗?

scala中的协变类型参数需要在java接口中保持不变

我有一个看起来像这样的特征(我可以在这个相关问题上找到一些更多的信息,虽然我不认为,这个问题需要它) trait Extractor[-A,+B] { def extract(d:A):B //lots of other things } 要在现有的java框架中使用它,我希望这个Extractor有一个返回Comparator[B] (是java.util.Comparator )的函数,或者甚至更好地扩展Comparator[A] 。 现在这会产生问题,因为Comparator的类型参数应该是不变的,而A是逆变的, B是协变的。 所以我得到这样的错误: scala> import java.util.Comparator import java.util.Comparator scala> trait Extractor[-A,+B] extends Comparator[A] :6: error: contravariant type A occurs in invariant position in type [-A,+B]java.lang.Object with java.util.Comparator[A] of trait Extractor trait Extractor[-A,+B] extends Comparator[A] ^ scala> trait Extractor[-A, +B] { […]

如何在Scala 2.8注释中指定静态数组?

我一直在使用Hibernate Annotations 3.4.0在Scala 2.8.0中构建一些带注释的域类。 它一直工作正常,除了有一些注释将数组作为参数。 例如,这是我想在Scala中表达的Java注释: @OneToMany(mappedBy=”passport_id”, cascade=CascadeType.PERSIST) 但是,注释需要数组/集作为输入: [ERROR] …/Passport.scala:50: error: type mismatch; [INFO] found : javax.persistence.CascadeType(value PERSIST) [INFO] required: Array[javax.persistence.CascadeType] [INFO] @OneToMany(mappedBy=”passport_id”, cascade=CascadeType.PERSIST) 我尝试了各种括号,方形/角度/花括号等,以此类推: @OneToMany(mappedBy=”passport_id”, cascade=(CascadeType.PERSIST)) @OneToMany(mappedBy=”passport_id”, cascade=[CascadeType.PERSIST]) @OneToMany(mappedBy=”passport_id”, cascade=) @OneToMany(mappedBy=”passport_id”, cascade={CascadeType.PERSIST}) …但不幸的是,我已经达到了对Scala / Java注释的理解。 感谢帮助。

为什么类型参数绑定T <:Comparable 失败T = Int?

scala> class Foo[T (3: Int).asInstanceOf[Comparable[Int]] res60: java.lang.Comparable[Int] = 3 scala> new Foo(3) :13: error: inferred type arguments [Int] do not conform to class Foo’s type parameter bounds [T <: java.lang.Comparable[T]] new Foo(3) ^ 第二个表达式是类型擦除的结果吗? 我将如何定义Foo以便我可以使用Int对其进行参数化,但仍然能够使用其实例变量执行某些排序行为?