我有一个带有方法的java类“JavaClass”:
boolean addAll(java.util.Collection<? extends java.lang.Integer> collection) { ... }
我需要创建一个包含此方法的Scala trait MyTrait,而不需要实现,例如
def addAll[A<:java.lang.Integer](coll: java.util.Collection[A]) : Boolean
这样一个实现
class MyClass extends JavaClass with MyTrait
不会是抽象的。但我无法找到任何匹配Trait中Java签名的方法。
FWIW ...我正在尝试为Trove编写一些高性能的Scala集合兼容包装器,它避免了泛型为基本提供高性能,但为每种基本类型使用了高度一致的接口。我发现一般来说,traits可以很好地模拟独立于类型的demi-interfaces,但我无法弄清楚如何表达这个特定的签名 - 即使忽略了我正在使用的类型抽象。的特质。
答案 0 :(得分:3)
Collection<? extends java.lang.Integer>
等同于
Collection[T] forSome {type T <: java.lang.Integer}
或使用占位符语法Collection[_ <: java.lang.Integer]
在斯卡拉